In diesem Artikel der Grund zu verwenden #ifndef Und #definieren Headerwächter in Ihrem Code werden besprochen.
Warum werden #ifndef und #define in C ++ - Header -Dateien verwendet?
In C ++ die #ifdef Und #definieren werden als Anweisungen für den Compiler zum Schutz/des Schützen der Mehrfachverwendung von Header -Dateien verwendet. Aus diesem Grund werden sie auch genannt Header Guards. Es gibt eine bestimmte Syntax, die zur Verwendung befolgt werden muss #ifndef Und #definieren. Die Syntax ist also das, wann immer #ifndef wird verwendet, der Benutzer muss auch mit Verwendung beendet werden #endif und zwischen diesen können alle Erklärungen oder Header -Dateien hinzugefügt werden:
Syntax
#ifndef File_hIn C ++ - Code, #ifndef Und #definieren Identifizieren und verhindern die Neuanschlüsselung von Klassen, Aufzügen, statischen Variablen oder anderen Kennungen. Dies ist nützlich in Szenarien, in denen mehrere Klassen/Funktionen erstellt werden und in Programmen aufgerufen werden. Da es oft passiert, wenn ein komplexer Code mit mehreren Klassen und Objekten entworfen wird und die Entwickler dazu neigen, bestimmte Kennungen in verschiedenen Dateien zu wiederholen. Angenommen, ein Benutzer hat beispielsweise zwei korrelierte Dateien erstellt i.e Datei1.H und ein Datei2.H und hat Datei1 enthalten.H in Datei2.H und umgekehrt.
Auf diese Weise tritt eine Wiederholung auf, die eine Rekursivität verursacht. Um diese Rekursivität zu vermeiden, wenn der Benutzer hinzugefügt wird #ifndef Und #definieren Header -Dateien, dann unterrichten diese Header den Compiler, diese Rekursivität zu verhindern.
Was ist eine Rekursivität in einem Code und wie “#ifndef” Und “#definieren” Hilfe bei der Rekursivität
Rekursivität bezieht sich auf die Fähigkeit einer Funktion, mehrfach in einen Quellcode aufzunehmen. Die Rekursivität in einem Code generiert verschiedene Arten von Kompilierungsfehlern, wie z. B. mehrere Definitionen, Neudefinition von Symbolen und mehr. Um diese Rekursivität zu verhindern, verwenden wir "#Ifndef" Und "#definieren" Header Guards.
Lassen Sie uns ein Beispiel darüber verfolgen, wie "#Ifndef" Und "#definieren" verhindert die Rekursivität in einem Code. Angenommen, es gibt eine Header -Datei “X.H" Dies schließt die Header -Datei ein “y.H", und die andere Kopfdatei “y.H" inklusive "X.H". Dies wird als rekursive Einbeziehung bezeichnet und erstellt Fehler, wenn Sie den Code kompilieren. Um dies zu verhindern, können wir verwenden #ifndef Und #definieren In X.H Und y.H folgendermaßen:
Die Header -Datei X.H wird unten angegeben:
#ifndef x_hDie Header -Datei y.H wird unten angegeben:
#ifndef y_hHier, X_H Und Y_h sind einzigartige Symbole definiert von #definieren. Das erste Mal X.H ist enthalten, X_H wird nicht definiert, sodass der Präprozessor es definiert und einbezieht y.H. Wenn y.H ist enthalten, Y_h wird nicht definiert, sodass der Präprozessor es definiert und einbezieht X.H nochmal. Diesmal jedoch, AH wird definiert, so dass der Präprozessor die Aufnahme von überspringt X.H.
Auf diese Weise wird die rekursive Aufnahme verhindert und das Programm kann ohne Fehler kompiliert werden.
Abschluss
Der #ifndef Und #definieren sind bekannt als Header Guards Für C ++, die verwendet werden, um die Rekursivität oder Wiederholung von Kennungen zu verhindern/zu schützen. Die Headerwächter werden zur Vorverarbeitung verwendet, und deshalb werden sie in der verwendet .H Dateien (Header) Dateien und nicht in der hauptsächlich .CPP (kompilierbare) Datei. Die Syntax und Verwendung des Header Guard werden in den oben genannten Richtlinien erörtert.