www.mikrocontroller.net

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


Autor: Oliver Herpel (oliher)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: willivonbienemaya (Gast)
Datum:

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

Autor: Amtmann (Gast)
Datum:

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

Autor: Oliver Herpel (oliher)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: OliverSo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
#include <avr/io.h>
 anfangen.

Oliver

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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
#include <avr/io.h>
 anfangen.

Nur wenn sie auch wirklich IO betreiben will.

Matthias

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.