Rechnen mit Fließkommazahlen, float
-
Hallo
ich habe ein paar Probleme bei der Mikroprozessorprogrammierung.wenn ich folgende Berechnung machen will
#include "math.h" #include "float.h" . .. ... ..... int uberlauf=0; float time=0; time=uberlauf*(1/84.375);
da bekomm ich folgende Meldungen:
Assembling main.src
Linking to aktuell.out
link51 W018: recursive call from 'MAIN_MAIN_PR' to 'CODE'
link51 E001: unresolved external symbol '__FMULCO', module main.obj
link51 E001: unresolved external symbol '__CIFL44', module main.obj
link51 E001: unresolved external symbol '__STOREFREG', module main.obj
link51 E002: reference made to unresolved external, symbol '__CIFL44', module main.obj
link51 E002: reference made to unresolved external, symbol '__FMULCO', module main.obj
link51 E002: reference made to unresolved external, symbol '__STOREFREG', module main.obj
wmk: *** action exited with value 1.kennt jemand das problem???
gruß
-
^^irgendwo in den linker-einstellungen die float-unterstützung aktivieren.
oder besser: überleg dir, ob dein programm auch ohne floats arbeiten kann. rechnungen mit floats sind super ungenau. und wenn's emuliert werden muss, ist es auch super langsam.
-
ohne floats geht es nicht, da ich frequenzen und zeiten berechnen muss.
linker einstellungen??? wie komm ich dahin? sicher das es daran liegt?
-
jaepen schrieb:
linker einstellungen??? wie komm ich dahin?
du musst die doku zu deinem compiler und build-tools usw. lesen. da steht das bestimmt drin.
-
sache1:
wenn du sowas hast
(1/84.375)
und du weist dass es sich nicht ändern wird, nimm dirn taschenrechner und rechne es schon aus
schreib dann lieber schontime = ueberlauf* 0,01185185185185185
und da ueberlauf ja int ist würde ich noch nen cast dazwischenwerfen
time = (float)ueberlauf* 0,01185185185185185f