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 cppo 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 #ifndeflinguaggio comune e portatile, quindi è efficiente come #pragma once.
#ifndef HEADERFILE_Hpuò violare lo spazio dei nomi dell'implementazione del nome dell'intestazione che inizia con E; gli identificatori che iniziano con Ee una cifra o una lettera maiuscola sono riservati a <errno.h>. Io suggerisco #ifndef H_HEADERFILE.