Forum: Compiler & IDEs Include Dateien doppelt angeben?!


von PEte (Gast)


Lesenswert?

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.

von gcc (Gast)


Lesenswert?

weil find.c ist getrent von main.c in object file kompiliert.

von Karl H. (kbuchegg)


Lesenswert?

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.

von PEte (Gast)


Lesenswert?

Gibt es eine Art extern Include? Ich muss Platz sparen :) Ich kann nicht 
jedes Include fünfmal in mein Programm aufnehmen.

von Peter II (Gast)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

Wieso nicht? Ist die Festplatte voll?

von Klaus (Gast)


Lesenswert?

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.

von PEte (Gast)


Lesenswert?

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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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