Я видел код, как это обычно в начале заголовочных файлов:
#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.