Мне нужно включить заголовочный файл в нескольких файлах CPP, содержащих целый ряд глобальных переменных. Но проблема, с которой я сталкиваюсь, заключается в том, что я не могу изменить переменные. Я могу инициализировать переменную в файле заголовка или в любом из файлов cpp, но когда я прихожу, чтобы изменить его, он либо не будет компилироваться, либо создаст 2 экземпляра переменной, которые не входят в сферу действия одного и того же. Мне нужен способ, который позволит мне изменить значение в функции.Модифицируемая глобальная переменная C++
Пример использования статического (Это создает экземпляры переменных вне сферы действия других переменных)
#pragma once
namespace SCE
{
static bool SC_DEBUG = false;
static bool VSYNC = true;
static int SC_LOG_LEVEL = 3;
}
Ive также попытался с помощью «Экстерн», но у меня не было никакой удачи с этим тоже.
#pragma once
namespace SCE
{
extern bool SC_DEBUG;
extern bool VSYNC;
extern int SC_LOG_LEVEL;
}
Редактировать Я получаю сообщение об ошибке «Ошибка LNK2001: неразрешенный внешний символ„BOOL SCE :: КАДРОВ“(? КАДРОВ @ SCE @@ 3_NA)», когда я пытаюсь изменить переменную после его создания используя extern. Как я попробовать и отредактировать его, как так
int main()
{
SCE::VSYNC = false;
// ...
}
Решение Я использую установку мульти-проекта. Так что происходит, что «Project B» содержит заголовочный файл Global Variable и cpp, а «Project A» пытается изменить значение после его установки. Теперь по какой-то причине, поскольку «Project A» только вытягивает файл заголовка глобальной переменной, он получает определения переменных, но не может видеть инициализацию переменных, тем самым бросая множество странных ошибок.
Это не проблема, у меня, я могу создать их хорошо, но когда дело доходит до их редактирования, я получаю LNK2001 ошибки Ошибка: неразрешенный внешний символ «BOOL SCE :: VSYNC "(? VSYNC @ SCE @@ 3_NA) – 0xen
@ 0xen Включили ли вы все свои файлы в свой проект? Если 'globals.cpp' не включен, вы получите эту ошибку. –
Да, он компилируется и работает нормально, когда я не пытаюсь редактировать переменную, как показано выше в моем редактировании. – 0xen