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
In C inkludiert man eigentlich Headerdateien nur in .c Files. Und da dann nach Möglichkeit nur die die gebraucht werden.
Hm, die Frage von Oliver find ich interessant, aber mit der Antwort von willi... kann ich leider nichts anfangen.
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.