Warum werden #ifndef und #define in C ++ - Header -Dateien verwendet?

Warum werden #ifndef und #define in C ++ - Header -Dateien verwendet?
Die C ++ - Codes können manchmal lang werden und die Wiederholung bestimmter Erklärungen oder Funktionen kann auftreten. Wenn Sie mehrere Funktionen mit ähnlichen Namen haben. Um zu verhindern, dass diese Arten von Fehlern wiederholte Kennungen wie Funktionen, Klasse oder Variablen haben, die Header Guards werden verwendet, die sind #ifndef Und #definieren. Dies sind C ++ - Derivate, die verhindern, dass der Inhalt einer Header -Datei mehrmals verwendet wird. Diese Wachen stellen sicher, dass der Inhalt einer Header -Datei einmal in einer Datei verwendet wird.

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_h
#define Datei_h
// Deklarationscode
#endif

In 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_h
#define x_h
#include "y.H"
// Inhalte der verbleibenden Headerdatei
#endif

Die Header -Datei y.H wird unten angegeben:

#ifndef y_h
#define y_h
#include "x.H"
// Inhalte der verbleibenden Headerdatei
#endif

Hier, 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.