Perché #IFNDEF e #Define sono utilizzati nei file di intestazione C ++

Perché #IFNDEF e #Define sono utilizzati nei file di intestazione C ++
I codici C ++ possono diventare lunghi a volte e può verificarsi la ripetizione di alcune dichiarazioni o funzioni. Avere più funzioni con nomi simili genera un errore durante l'esecuzione del codice e non riesce a fornire agli utenti l'output desiderato. Per impedire a questi tipi di errori di avere identificatori ripetuti come funzioni, classe o variabili, il Guardie di intestazione sono usati, che sono #ifndef E #definire. Questi sono derivati ​​C ++ che impediscono il contenuto di un file di intestazione da utilizzare più volte. Queste guardie assicurano che il contenuto di un file di intestazione venga utilizzato una volta in un file.

In questo articolo, il motivo per usare #ifndef E #definire Viene discusso le guardie dell'intestazione nel tuo codice.

Perché #IFNDEF e #Define sono utilizzati nei file di intestazione C ++

In C ++, il #ifdef E #definire vengono utilizzati come istruzioni per il compilatore per proteggere/proteggere l'utilizzo multiplo dei file di intestazione. Per questo motivo, sono anche chiamati guardie di intestazione. C'è una sintassi specifica che deve essere seguita per essere utilizzata #ifndef E #definire. Quindi, la sintassi è che ogni volta #ifndef viene utilizzato, l'utente è inoltre tenuto a terminarlo utilizzando #finisci se e tra queste dichiarazioni o file di intestazione possono essere aggiunti:

Sintassi

#ifndef file_h
#define file_h
// Codice di dichiarazione
#finisci se

Nel codice C ++, #ifndef E #definire Identificare e prevenire la riduzione di classi, enum, variabili statiche o altri identificatori. Ciò è utile negli scenari in cui vengono create più classi/funzioni e vengono chiamate nei programmi. Perché molte volte accade quando viene progettato un codice complesso con più classi e oggetti e gli sviluppatori tendono a ripetere determinati identificatori in file diversi. Ad esempio, supponiamo che un utente abbia creato due file correlati i.e File1.H e a file2.H e ha incluso file1.h in file2.H e viceversa.

In questo modo, si verifica una ripetizione causando ricorsività. Per evitare questa ricorsione se l'utente aggiunge #ifndef E #definire File di intestazione, quindi queste intestazioni istruiscono il compilatore per prevenire questa ricorsività.

Cos'è la ricorsività in un codice e come "#ifndef" E "#definire" Aiutare con la ricorsività

La ricorsività si riferisce alla capacità di una funzione di essere incluso più volte in un codice sorgente. Avere ricorsività in un codice genererà diversi tipi di errori di compilation, come definizioni multiple, ridefinizione dei simboli e altro ancora. Per prevenire questa ricorsione, usiamo "#Ifndef" E "#definire" guardie di intestazione.

Seguiamo un esempio su come "#Ifndef" E "#definire" impedisce la ricorsività in un codice. Supponiamo che ci sia un file di intestazione "X.H" Ciò include il file di intestazione "y.H", e l'altro file di testa "y.H" Include "X.H". Questo si chiama inclusione ricorsiva e creerà errori quando si compilerà il codice. Per evitare questo, possiamo usare #ifndef E #definire In X.H E y.H come segue:

Il file di intestazione X.H è riportato di seguito:

#ifndef x_h
#define x_h
#include "y.H"
// Contenuto del file di intestazione rimanente
#finisci se

Il file di intestazione y.H è riportato di seguito:

#ifndef y_h
#define y_h
#include "x.H"
// Contenuto del file di intestazione rimanente
#finisci se

Qui, X_H E Y_h sono simboli unici definiti da #definire. La prima volta X.H è incluso, X_H non verrà definito, quindi il preprocessore lo definirà e includerà y.H. Quando y.H è incluso, Y_h non verrà definito, quindi il preprocessore lo definirà e includerà X.H Ancora. Tuttavia, questa volta, A_h sarà definito, quindi il preprocessore salterà l'inclusione di X.H.

In questo modo viene prevenuta l'inclusione ricorsiva e il programma può essere compilato senza errori.

Conclusione

IL #ifndef E #definire sono conosciuti come guardie di intestazione per C ++ che vengono utilizzati per prevenire/proteggere la ricorsività o la ripetizione degli identificatori. Le guardie di intestazione vengono utilizzate per il pre-elaborazione ed è per questo che vengono utilizzate all'interno del .file h (intestazione) file e non in principale .CPP (Compile-Able) File. La sintassi e l'utilizzo della guardia dell'intestazione sono discussi nelle linee guida sopra menzionate.