Forum: Compiler & IDEs Codegröße bei mehrmaligem itoa() Gebrauch


von SoLaLa (Gast)


Lesenswert?

hallöle,
ich hatte neulich mal ein Problem mit der itoa() Funktion.
WinAVR mit AVRstudio
Mega32
Fleury UART
Meßwerte erfassen und mit itoa() über UART ausgeben

Im gesamten Programm 1 bis4 mal itoa() verwendet lag die Codegröße 
zeimlich konstant bei 8-9kB.
Als ich dann ein 5. mal itoa() verwendete betrug die Codegröße 14kB.

Kann das jemand erklären bzw. nachvollziehen?

von Gast (Gast)


Lesenswert?

Zum nachvollziehen wäre der Code noch hilfreich.

von SoLaLa (Gast)


Lesenswert?

hihi,
wie ich in diesem Forum schonmal anmerkte:
"wenn man das Problem erstmal niederschreibt, dann kommt man auch selbst 
auf die Lösung... und müßte dementsprechend nicht die Spezialisten hier 
mit dem Blödsinn konfrontieren :-)"
Ich hatte in dem Code mehrere Zeilen in der Art

lcd_puts(itoa((zeit*6),s,10));
uart_puts(itoa((drehzahl[2]),s,10));

da war das Kompilat etwa 8 bis 9 kB. Aber die eine Zeile die ich noch 
hatte war diese:

lcd_puts(itoa((voltage*28.39),s,10));

das kompilat war dann damit 14kB groß! Aber wie ich jetzt weiß nicht 
wegen dem itoa() sondern wegen dem Fließkommaargument. Nach Umschreiben 
in

lcd_puts(itoa((voltage*2839/100),s,10));

bleibt der Code wieder bei 9kB Größe.

von Peter D. (peda)


Lesenswert?

SoLaLa wrote:
> das kompilat war dann damit 14kB groß! Aber wie ich jetzt weiß nicht
> wegen dem itoa() sondern wegen dem Fließkommaargument.

Und wegen der fehlenden optimierten float-Lib "-lm".


Peter

von SoLaLa (Gast)


Lesenswert?

Dankeschön lieber Peter :-)
nach suchen-lesen-finden-verstehen-unddasganzeinmeinmakefilereinbasteln 
klappt das tatsächlich mit dem -lm

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.