Я зазвичай бачив такий код зазвичай на початку файлів заголовків:
#ifndef HEADERFILE_H
#define HEADERFILE_H
І в кінці файлу є
#endif
Яка мета цього?
#pragmaтаке: він активує особливість компілятора. Хоча #pragma onceце дуже широко підтримуються, це нестандартне.
info cppабо дивіться тут ) сказано, що "вона не розпізнається всіма препроцесорами, тому ви не можете розраховувати на неї в портативній програмі". І GNU cpp оптимізує загальну та портативну #ifndefідіому, настільки ж ефективна #pragma once.
#ifndef HEADERFILE_Hможе порушити простір імен реалізації ім'я заголовка, що починається з цього E; ідентифікатори, що починаються з, Eі цифра або велика літера зарезервована до <errno.h>. Я пропоную #ifndef H_HEADERFILE.