Да, вы можете назвать включаемый символ защиты как угодно, но имейте в виду, что они должны быть уникальными для разных заголовков.Вам определенно не нужен заголовок
// first.h
#ifndef NON_UNIQUE_H
#define NON_UNIQUE_H
void foo();
#endif
и еще один
// second.h
#ifndef NON_UNIQUE_H
#define NON_UNIQUE_H
void bar();
#endif
Когда вы включите оба в одну единицу перевода, один "выиграет", и его объявления будут видны,Например,
// main.cpp
#include "first.h" // now, NON_UNIQUE_H is defined
#include "second.h" // NON_UNIQUE_H already there, doesn't do anything
int main(int, char**)
{
bar(); // error, won't compile, bar() isn't declared
}
Помимо необходимости обходить такие сценарии, лучше придерживаться некоторых соглашений в рамках всего проекта.Один из классических способов сделать это - преобразовать базовое имя файла заголовка в верхний регистр и добавить _H
.Если у вас есть заголовочные файлы с одинаковым базовым именем в разных каталогах, вы можете включить имя каталога, например, SUBDIR_FOO_H
и OTHERSUBDIR_FOO_H
.Но это зависит от вас.