Forum: Mikrocontroller und Digitale Elektronik #include ....h


von Oliver H. (oliher)


Lesenswert?

Hallo,

ich bin gerade dabei mein ATmega32 mit einem C-Programm zu füttern.

Das Programm wird sehr groß und umpfangreich, daher wollte ich darauf 
achten, dass ich das Programm so programmiere, dass es hinterher jeder 
nachvollziehen kann. Ich unterteile mein Programm also in mehrere kleine 
Programmeinheiten bestehend aus dem .c und dem .h files. Ich dachte 
eigentlich immer ich müsste die Header-files immer nur einmal einbinden 
und dann wäre es auch in den anderen Programmteilen sichtbar. Also, z.B:

#include <avr\io.h>

in meiner Hauptdatei

und danach binde ich z.B
die Headerdatei
#include <Teil_1.h>

ein.

Dieser Teil verwendet ebenfalls "io.h"
Also dachte ich jetzt müsste ich "io.h" nicht mehr in
"Teil_1.h" einbinden, da Dieser ja bereits bekannt ist.

Kann mich jemand aufklären?

Gruss

Oliver

von willivonbienemaya (Gast)


Lesenswert?

In C inkludiert man eigentlich Headerdateien nur in .c Files.
Und da dann nach Möglichkeit nur die die gebraucht werden.

von Amtmann (Gast)


Lesenswert?

Hm, die Frage von Oliver find ich interessant, aber mit der Antwort von 
willi... kann ich leider nichts anfangen.

von Oliver H. (oliher)


Lesenswert?

Also ich lese mir gerade den Artikel "Inlude-Files" aus dem 
Mikrocontroller.net-Board durch. Demnach müsste es eigentlich 
funktionieren, soweit ich das bisher beurteilen kann.
Also habe ich vermutlich irgendwo einen Fehler in meinem Programm.

Gruss

Oliver

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

willivonbienemaya wrote:
> In C inkludiert man eigentlich Headerdateien nur in .c Files.
> Und da dann nach Möglichkeit nur die die gebraucht werden.

Sagt wer? Headerdateien erstelle ich immer so das sie ohne das 
inkludieren anderer funktionieren. Wenn also im Header ein FILE 
gebraucht wird wird dort auch stdio.h inkludiert. Man brauchts ja eh und 
muß dann nicht beim inkludieren erstmal kucken was man noch so braucht.

Matthias

von OliverSo (Gast)


Lesenswert?

Der Compiler weiss überhaupt nichts von den anderen .c-Dateien. Jede 
.c-Datei wird vom Compiler einzeln compiliert, und benötigt daher alle 
header-Dateien, die darin benötigt werden. Also muß jede .c-Datei für 
einen AVR und gcc mit
1
#include <avr/io.h>
 anfangen.

Oliver

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

OliverSo wrote:
> Der Compiler weiss überhaupt nichts von den anderen .c-Dateien. Jede
> .c-Datei wird vom Compiler einzeln compiliert, und benötigt daher alle
> header-Dateien, die darin benötigt werden. Also muß jede .c-Datei für
> einen AVR und gcc mit
1
#include <avr/io.h>
 anfangen.

Nur wenn sie auch wirklich IO betreiben will.

Matthias

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.