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