Zweck der Kopfschutze

8

In C ++ was ist der Zweck des Header Guard im C ++ Programm.

Aus dem Netz, das ich gefunden habe, soll verhindern, dass Dateien immer wieder eingefügt werden, aber wie garantiert Header-Guard dies.

    
ckv 05.06.2010, 06:15
quelle

2 Antworten

14

Der Guard-Header soll Probleme verhindern, wenn die Header-Datei mehr als einmal enthalten ist; z.B.

%Vor%

Das erste Mal, wenn diese Datei #include -ed ist, ist das Präprozessorsymbol% ​​co_de% undefiniert, so dass der Präprozessor das Symbol definiert und die folgenden Deklarationen im Quellcode enthalten sind, den der Compiler sieht. Bei nachfolgenden MARKER wird das Symbol% ​​co_de% definiert, und somit wird alles in #include / MARKER vom Präprozessor entfernt.

Damit dies ordnungsgemäß funktioniert, muss das #ifnde -Symbol für jede Header-Datei unterschiedlich sein, die möglicherweise #endif -ed ist.

Der Grund dafür ist, dass es in C / C ++ illegal ist, einen Typ oder eine Funktion mit demselben Namen mehr als einmal in einer Übersetzungseinheit zu definieren. Der Wächter erlaubt einer Header-Datei MARKER andere Header-Dateien, ohne dass dies dazu führen könnte, dass einige Deklarationen mehrfach enthalten sein könnten.

Kurz gesagt, verhindert Sie nicht, dass Sie %% eine Datei immer wieder neu eingeben. Stattdessen können Sie dies tun ohne Kompilierungsfehler zu verursachen .

    
Stephen C 05.06.2010, 06:20
quelle
2

Der Zweck von Header-Wächtern ist, Probleme zu vermeiden, bei denen ein Code nur einmal pro Übersetzungseinheit vorkommen kann.

Ein Beispiel ist eine Struktur. Sie können eine Struktur auch dann nicht neu definieren, wenn die zweite Definition identisch ist. Also, wenn Sie versuchen, folgendes zu kompilieren:

%Vor%

Der Compiler wird wegen der Neudefinition fehlschlagen.

Es kann schwierig sein zu garantieren, dass Sie nur einmal einen Header einschließen (dies passiert, wenn Header andere Header enthalten). Wenn Ihr Header eine Strukturdefinition hat, führt dies dazu, dass der Kompiliervorgang fehlschlägt. Header-Wächter sind der einfache Trick, so dass selbst wenn ein Header mehrfach enthalten ist, der Inhalt nur ein einziges Mal erscheint.

    
R Samuel Klatchko 05.06.2010 06:56
quelle

Tags und Links