Frage zur header-Datei



  • Hi Leute!

    Wenn man eine header-Datei schreibt, dann sieht der Rahmen dazu ja so aus:

    #ifndef xxx
    #define xxx
    
    #endif
    

    Gibt es nun irgendwelche stillschweigende Konventionen wie man xxx schreiben sollte? Ich hab da schon einige Beispiele gesehen. Einige machen das so: __HEADER_H__ oder __header_h__. Wie macht man das dann richtig? Gibts da überhaupt ein richtig oder falsch?



  • AFaik gibt es keine Konventionen dafür, du solltest nur für jeden Header einen eigenen Namen verwenden. Allerdings sind die von dir genannten Bezeichner für den Compiler reserviert, also möglicherweise (selbst wenn's unwahrscheinlich ist) schon verwendet.



  • Es gibt keine wirklichen Konventionen. Man sollte darauf achten, dass es diese Konstanten nicht schon gibt. Meistens beinhaltet der Name etwas, das spezifisch für mein Dokument ist (z.B. ein Teil ist der Klassenname und dann irgendwas dazu). Allerdings sollte man nicht Namen wählem mit vorangehendem Underscore wie z.B. _MY_CLASS, da diese für den Compiler reserviert sind.

    *Edit
    Damn, warum bin ich immer zu langsam 🙄



  • Allerdings sind die von dir genannten Bezeichner für den Compiler reserviert, also möglicherweise (selbst wenn's unwahrscheinlich ist) schon verwendet.

    Meinst du damit jetzt die drei x oder das __header_h__ Beispiel? Wäre also dann __header_bit__ in Ordnung?



  • Was ich auch schon gesehen habe ist, dass die Erstellungszeit mitkodiert wird (also als ms seit 1970 oder so). Das geht ganz gut, wenn man die Dateien sowieso automatisch generieren lässt.



  • vip@r schrieb:

    Allerdings sind die von dir genannten Bezeichner für den Compiler reserviert, also möglicherweise (selbst wenn's unwahrscheinlich ist) schon verwendet.

    Meinst du damit jetzt die drei x oder das __header_h__ Beispiel?

    Vor allem die Beispiele - Namen mit zwei Unterstrichen oder mit Unterstrich+Großbuchstabe am Anfang sind reserviert. Mit einem "xxx" hättest du vermutlich ein anderes Problem, wenn du das bei allem Headern unverändert übernimmst 😃



  • Gut, dann weiß ich ja jetzt bescheid.

    Mit einem "xxx" hättest du vermutlich ein anderes Problem, wenn du das bei allem Headern unverändert übernimmst 😃

    Ich hab da grad direkt ein bisschen gebraucht bis ich kapiert hab was du damit sagen wolltest...



  • vip@r schrieb:

    Gut, dann weiß ich ja jetzt bescheid.

    Mit einem "xxx" hättest du vermutlich ein anderes Problem, wenn du das bei allem Headern unverändert übernimmst 😃

    Ich hab da grad direkt ein bisschen gebraucht bis ich kapiert hab was du damit sagen wolltest...

    Ist ein gerne gesehener Fehler... "ach, den header kopiere ich, nenne ihn um, nenne den Klassennamen um..." <compile> - "mist, wieso kennt der meine neue Klasse manchmal nicht??" -> Weil der include-guard nicht geändert wurde 😉


Anmelden zum Antworten