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_hNel 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_hIl file di intestazione y.H è riportato di seguito:
#ifndef y_hQui, 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.