Использование включает в себя охранники:
#ifndef INCLUDE_GUARD_IDENTIFIER_GOES_HERE
#define INCLUDE_GUARD_IDENTIFIER_GOES_HERE
// code for header
#endif
Во второй раз, когда он включен, это фактически пустой файл.
Есть много разных способов выбора идентификатора INCLUDE_GUARD_IDENTIFIER_GOES_HERE
,с обоснованиями для каждого.Лично я делаю FILE_DIRECTORY_FILE_NAME_CLASS/FUNCTION_NAME_HPP
:
#ifndef UTILITY_FOO_HPP
#define UTILITY_FOO_HPP
namespace utility
{
void foo();
}
#endif
Другие будут генерировать GUID и прикреплять их к базовому имени, например:
INCLUDE_GUARD_A629F54A136C49C9938CB33EF8EDE676
Это почти гарантирует, что оно никогда не столкнется.В конечном счете, решать вам.Однако, независимо от того, что вы придумали, убедитесь, что оно соответствует правилам : нигде не ставьте двойные подчеркивания и не начинайте его с подчеркивания, за которым следует буква верхнего регистра.