Header-File und dessen "Befehle"
-
Hallo, zusammen!
Kann mir bitte jemand die Begriffe erklären:
#ifndef _flaeche_h_ #define _flaeche_h_ 1 //hier stehn Unterprogrammprotypen structs etc., dies ein Header-File ist #endif
Was machen die 3 Befehle? Kann mir einer das erklären bitte?
mfg mr man
-
Das sind Include Guards.
-
#ifndef steht für
if not defined
und prüft on das nachfolgende Makro schon definiert wurde. Wenn es noch nicht definiert wurde wird alles bis zum dazugehörigen #endif bzw #else übernommen.#define definiert ein Makro. Überall wo im C-Quelltext dieses Makro erscheint, wird es ersetzt durch den Text dahinter. Ausnahme sind Stringliterale (Text zwischen ".
#endif schließt das #ifndef ab.
Der Zweck hier liegt darin, dass Definitionen nicht doppelt abgearbeitet werden, wenn das Header-File mehrmals eingebunden wird.
-
#define _flaeche_h_ 1
Diese Zeile ist denkbar schlecht.
Namen, die mit Unterstrich beginnen sind in C reserviert (also quasi verboten) und das dahinter 1 ist nicht notwendig.
Ausserdem schreibt man Makros konsistenterweise immer mit Grossbuchstaben.Ich schreib das immer so:
#define FLAECHE_H__
-
nooneindef schrieb:
Ich schreib das immer so:
#define FLAECHE_H__
Sind nicht auch alle Bezeichner, die '__' beinhalten, reserviert?
-
Gugelmoser schrieb:
nooneindef schrieb:
Ich schreib das immer so:
#define FLAECHE_H__
Sind nicht auch alle Bezeichner, die '__' beinhalten, reserviert?
Soweit mir das bekannt ist, geht es nur um den Anfang des Bezeichners. Was am Ende steht ist also egal. Trotzdem finde ich die nachfolgenden __ nicht schön
-
nooneindef schrieb:
Diese Zeile ist denkbar schlecht.
Von dem Makronamen bekommt der C-Compiler doch gar nichts mit.
Wenn der Präprozessor mit dem Quelltext fertig ist, sind alle #... aus dem Code raus und alle Makros ersetzt.