Beitrag
von Xin » Mo Jul 13, 2009 10:27 am
Dies ist die übliche Technik um das mehrfache Einbinden von Headern zu vermeiden.
Der Code (welcher ausschließlich aus Deklarationen bestehen sollte!), wird dann ausgeführt, wenn __COM_H__ nicht definiert wird.
Es wird __COM_H__ definiert und beispielsweise struct Example {...}.
Bindest Du den Header nun nochmals von einem anderen Header ein, so würde struct Example {...} ein zweites Mal deklariert, was zu einer Fehlermeldung führt, weil struct Example ist dem Compiler ja bereits bekannt.
Durch den Präprozessor wird das abgefangen: Da __COM_H__ bereits definiert ist, wird alles bis #endif ignoriert, struct Example {...} wird also beim 2. Mal lesen ignoriert => keine doppelte Deklaration => kein Fehler.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.