#define
в C и C ++ доступен, но он не создает символ, он создает макрос препроцессора, который по сути является операцией замены текста, которая происходит до того, как компилятор даже увидит исходный файл.
Обычный способ создания локального символа в файле C ++ - это использование анонимного пространства имен, например,
namespace
{
const int SOME_LOCAL_INT = 3;
const std::string SOME_LOCAL_STRING("Blah");
}
Использование анонимного пространства имен гарантирует, что символ не будет виден внемодуль компиляции, в котором он определен.Однако обратите внимание, что если вы определите анонимное пространство имен внутри файла заголовка, копия символов, содержащихся в нем, будет доступна во всех файлах C ++, которые включают этот заголовочный файл, поэтому лучше поместить анонимное пространство имен в файл .cpp, чтобычто они действительно местные.