Forum: Compiler & IDEs Makefile (SRC) und Programmspeicher


von x7 (Gast)


Lesenswert?

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 ?

von Oliver (Gast)


Lesenswert?

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

von Klaus W. (mfgkw)


Lesenswert?

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.

von x7 (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.