Hallo, Warum muss ich die Include Datein (avr/io.h) auch in meinen eigenen Include Dateien "find.c" angeben wenn ich sie doch schon zuvor in "main.c" eingebunden habe? "find.h" ist nach "avr/io.h" in "main.c" angeben. Ich benutze AVR Studio 5.
Weil find.c unabhängig von main.c compiliert wird. Wenn find.c compiliert wird, weiß der Compiler nichts von dem was in main.c steht. Interessiert ihn auch nicht. Wenn main.c compiliert wird, weiß der Compiler nichts davon, was in find.c steht. Interessiert ihn auch nicht. Jedes *.c File wird für sich, und nur für sich alleine compiliert.
Gibt es eine Art extern Include? Ich muss Platz sparen :) Ich kann nicht jedes Include fünfmal in mein Programm aufnehmen.
PEte schrieb: > Gibt es eine Art extern Include? Ich muss Platz sparen :) Ich kann nicht > jedes Include fünfmal in mein Programm aufnehmen. du kannst sie auch 100mal reinschreiben, include dateien verbrauchen meist keinen Platz compilat. Damit sparst du also nichts.
PEte schrieb: > Gibt es eine Art extern Include? Ich muss Platz sparen :) Ich kann nicht > jedes Include fünfmal in mein Programm aufnehmen. Das vergiss mal ganz schnell wieder ;-) Ein Include braucht kein Platz, da in ihm keinerlei Definitionen (=das was Speicher belegt) drin stehen. Alles was Speicher belegt (=die implementierung von Funktionen, Variablen ) steht nur in der C-Datei und die wird nur einmal kompiliert.
holger schrieb: > Wieso nicht? Ist die Festplatte voll? Nein noch nicht aber fast. Es sind noch 7kb frei :) Danke, und schon habe ich wieder etwas dazu gelernt.
Karl Heinz Buchegger schrieb: > Weil find.c unabhängig von main.c compiliert wird. > ... > Jedes *.c File wird für sich, und nur für sich alleine compiliert. Selbst wenn man sie zusammen compilert, hilft das auch nix. Man kann dem Compiler nämlich auch mehrere Qulldateien mitgeben. Hilft aber -- wie gesagt -- nix. Die Begründung ist, daß eine Deklaration (bzw. Definition) vor der Verwendung stehen muss. Und main.c ist eine andere Datei als foo.c. Wie das Zeug dem Compiler übermittelt wird, hat zur C-Semantik nix zu tun. (Wohl aber, wie effizient der Compiler den Code mit dem Zusatzwissen übersetzen kann.)
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.