Нет "правила", есть только условности.Первое и наиболее используемое соглашение состоит в том, что все макросы прекомпилятора все в верхнем регистре, поэтому элементы защиты заголовка тоже должны быть в верхнем регистре.
Что касается имени макроса, что я использую (и какую часть кода я виделИспользуется) - это просто имя заголовка (как сказано, обращено ко всем заглавным буквам), включая расширение, заменяя точку подчеркиванием, за которым следует _INCLUDED
.
#ifndef MYHEADER_HPP_INCLUDED
#define MYHEADER_HPP_INCLUDED
// ...
#endif
. Обратите внимание, что многие предшествуют таким идентификаторам с помощьюподчеркивание или двойное подчеркивание, но это не очень хорошая практика, поскольку в стандарте указывается, что идентификаторы, начинающиеся (или содержащие) двойные подчеркивания, а идентификаторы, начинающиеся с единственного подчеркивания, за которым следует заглавная буква, зарезервированы для вещей, специфичных для компилятора / библиотеки (например, __declspec).в VC ++ или макросах, используемых в стандартных заголовках) во всех областях;все остальные идентификаторы, начинающиеся с одного подчеркивания, зарезервированы в глобальной области видимости.Поэтому такие идентификаторы не должны использоваться, чтобы избежать коллизий.
Подробнее об этом здесь .