Hallo, ich habe eine Verständnis frage zum Makefile und das einbinden von mehreren .c Files. Und zwar benutze ich zum kompilieren NetBeans 6.9.1 aber ich denke das Problem tritt auch mit dem AVR Studio auf. So folgendes Wenn ich die .c Files mit: #include "lcd_routines.c" #include "halb_automatik_modus.c" in meine main.c schreibe dann verbrauche ich weniger Data Speicher als wenn ich in meinem Makefile das hier eintrage: # List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c #lcd_routines.c halb_automatik_modus.c Um Zahlen zu nennen mit den .c Files im Main includiert brauche ich 84% Data und wenn ich die in das Makefile SRC schreibe dann brauche ich 94,5% warum ist das so ?
Vermutlich stecken in Dateien unbenutze Funktionen, die der Compiler im ersten Fall wegoptimiert. Im zweiten Fall baut erst der linker das Programm zusammen, und der packt alles mit dazu. Oliver
x7 schrieb: > #include "lcd_routines.c" > #include "halb_automatik_modus.c" In aller Regel falsch. Man wird i.d.R. Headerdateien #includen, aber keine C-Quelltexte. x7 schrieb: > warum ist das so ? Kommt auf deine Quelltexte an. Teilweise kann der Compiler besser optimieren, wenn er den ganzen Quelltext am Stück sieht. Die paar Byte Unterschied würden mich aber nicht so nervös machen, wie ein vermurkster Aufbau deines Programms - mit #include irgendwas.c hast du das vermutlich. Insbesondere, wenn du nicht selber in den Quelltext schauen und die Auswirkungen nachvollziehen kannst.
Nee das mit im includen der .c Files ist natürlich nicht in meinem Programm ich habe das über das makefile mit SCR gemacht. ich hatte das nur mal ausprobiert und hatte da den großen speicher unterschied festgestellt
Bei 94% in der DATA Section würde ich allerdings schon anfangen nervös zu werden.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.