Ho visto codice come questo di solito all'inizio dei file di intestazione:
#ifndef HEADERFILE_H
#define HEADERFILE_H
E alla fine del file è
#endif
Qual è lo scopo di questo?
#pragma
: attiva una funzione specifica del compilatore. Anche se #pragma once
è molto ampiamente supportato, è non standard.
info cpp
o guarda qui ) dice "non è riconosciuta da tutti i preprocessori, quindi non puoi fare affidamento su di essa in un programma portatile". E GNU cpp ottimizza il #ifndef
linguaggio comune e portatile, quindi è efficiente come #pragma once
.
#ifndef HEADERFILE_H
può violare lo spazio dei nomi dell'implementazione del nome dell'intestazione che inizia con E
; gli identificatori che iniziano con E
e una cifra o una lettera maiuscola sono riservati a <errno.h>
. Io suggerisco #ifndef H_HEADERFILE
.