2010-05-16 10 views
5

Dies ist wahrscheinlich eine sehr dumme Frage, aber ich muss mir sicher sein. Ich habe eine Klassendeklaration in einer Header-Datei zB gegeben.Schnelle Frage in Bezug auf bedingte Compilation (ifndef)

#ifndef file_H 
#define file_H 

class ex{ 
private: 

public: 
}; 

#endif 

und ich habe benötigt worden, um die Methodendefinitionen in der gleichen Datei zu schreiben, was ich getan habe, ist meine Frage ist die „#endif“ bleiben, wo es gerade nach der Klassendeklaration ist oder es geht am Ende meiner Datei nach den Klassenmethoden Definitionen ?.

Antwort

6

Am Ende der Datei.

Das Ziel dieser Form dieses #ifndef Musters ist es, eine Situation zu verhindern, in der die gleiche Deklaration oder Definition zweimal in einer Kompilierungseinheit erscheint.

Dies geschieht, weil eine C-Datei mehrere H-Dateien enthalten kann, die wiederum die gleiche Datei irgendwo in der Kette enthalten können. WENN Sie den Präprozessor ohne diese einfach ausführen würden, hätten Sie mehrere Kopien der H-Datei. Auf diese Weise haben Sie mehrere Kopien, aber der Präprozessor ignoriert alles nach der ersten Begegnung.

Da Sie nichts mehr als einmal definieren sollten, müssen Sie, wenn Sie Methodendefinitionen in die Header-Datei einfügen müssen, diese in die #endif einfügen.

+0

vielen Dank – silent

Verwandte Themen