L'intestazione di protezione impedisce problemi se il file di intestazione è incluso più di una volta; per esempio.
#ifndef MARKER
#define MARKER
// declarations
#endif
La prima volta che questo file è #include
-ed, il simbolo MARKER
preprocessore sarà indefinito, in modo che il preprocessore definirà il simbolo, e le seguenti dichiarazioni saranno inclusi nel codice sorgente visto dal compilatore. Nei successivi #include
, verrà definito il simbolo MARKER
e quindi tutto all'interno di #ifnde
/#endif
verrà rimosso dal preprocessore.
Per fare in modo che funzioni correttamente, il simbolo MARKER
deve essere diverso per ogni file di intestazione che potrebbe essere #include
-ed.
Il motivo per cui questo tipo di cosa è necessario è che in C/C++ è illegale definire un tipo o una funzione con lo stesso nome più di una volta in un'unità di compilazione. La guardia consente un file di intestazione agli altri file di intestazione #include
senza preoccuparsi che questo potrebbe causare l'inclusione di alcune dichiarazioni più volte.
In breve, non impedisce voi dal #include
-ing nuovo e di nuovo un file. Piuttosto, è che consente a di eseguire questo senza causare errori di compilazione.
fonte
2010-06-05 06:20:48
Il termine accettato per questo in C++ è "include guard". –
Wikipedia fornisce [una spiegazione molto buona] (http://en.wikipedia.org/wiki/Include_guard) di come funzionano le guardie incluse. –