我需要在包含一系列全局變量的多個CPP文件中包含頭文件。但我遇到的問題是,我似乎不能使變量可以修改。我可以在頭文件或任何cpp文件中初始化變量,但是當我改變它時,它將不會編譯或創建超出一個和另一個範圍的變量的2個實例。我需要一種方法可以讓我改變函數中的值。使用可修改的全局變量C++
例靜態的(它創建其他變量的範圍變量的實例)
#pragma once
namespace SCE
{
static bool SC_DEBUG = false;
static bool VSYNC = true;
static int SC_LOG_LEVEL = 3;
}
香港專業教育學院還利用「的extern」試過,但我要麼不得不與沒有運氣。
#pragma once
namespace SCE
{
extern bool SC_DEBUG;
extern bool VSYNC;
extern int SC_LOG_LEVEL;
}
編輯 我得到的錯誤 「錯誤LNK2001:無法解析的外部符號 」布爾SCE :: VSYNC「(?VSYNC @ SCE @@ 3_NA)」,當我嘗試和編輯變量一旦創建它使用extern。我嘗試和編輯它的方式是像這樣
int main()
{
SCE::VSYNC = false;
// ...
}
解決方案 我使用的是多項目的設置。因此,發生的事情是'項目B'包含全局變量頭文件和cpp,而'項目A'正試圖在設置後更改該值。現在出於某種原因,因爲'項目A'只是拉動全局變量頭文件,所以它獲取變量定義但是看不到變量的初始化,從而拋出一些奇怪的錯誤。
這不是我有問題,我可以精細創建它們,但是當涉及到編輯它們,我得到的錯誤錯誤LNK2001:無法解析的外部符號「布爾SCE :: VSYNC「(?VSYNC @ SCE @@ 3_NA) – 0xen
@ 0xen您是否已將所有文件包含到項目中?如果不包含'globals.cpp',則會出現該錯誤。 –
是的,它編譯並運行良好,當我不嘗試編輯如上所示在我的編輯變量。 – 0xen