我已經使用OpenGL在C++中編寫了一個簡單的程序。我需要的是在兩個文件中有幾個全局變量 - main.cpp和funcs.cpp - 它們將保持相同的值。當我試圖在funcs.h(其中也包括在main.cpp中)申報這些變量,我得到這個錯誤:全局變量和鏈接器錯誤
1>main.obj : error LNK2005: "int myVariable" ([email protected]@3HA) already defined in funcs.obj
1>Path to my program : fatal error LNK1169: one or more multiply defined symbols found
這是相當明顯的,因爲它會在funcs中創建變量。 cpp和main.cpp。當我試圖用這種方式聲明變量時:
//funcs.cpp
int myVariable;
//main.cpp
int myVariable;
而且它們都是全局的,我得到的錯誤與上面完全相同。我感興趣的是,兩個變量在相反的文件中都是不可見的,所以爲什麼變量具有相同的名稱是錯誤的?據我所知,在main.cpp和func.cpp中沒有可能參考funcs.cpp中的myVariable
。我的第二個問題是 - 解決我的問題的最好方法是什麼,因爲我所做的只是重命名了其中的一些變量(其中有很多),並在funcs.cpp中添加了函數,如setNewValue(int newValue)
,我可以從main調用它們。 cpp但說實話 - 我並不以此爲榮。
我使用Microsoft Visual Studio 2012,C++/OpenGL。
作爲'static'的替代方法,您也可以使用匿名命名空間。 –
@TomW謝謝,我又錯過了_C++ _標籤並假定_C_;將編輯 – pb2q
哈哈就這麼簡單:D非常感謝。有時候,當我想到很難做到的事情時,我忘記了最簡單的解決方案:P – Blood