基本上我想在另一個文件的std :: array中使用一個全局常量。在std :: array中使用的C++ 11中的全局常量
我知道這個全局變量問題已經在這裏被多次詢問了。例如,這樣一句: Defining global constant in C++
和個人我更喜歡使用方法5或6:
5:const int的GLOBAL_CONST_VAR = 0xFF的;
6:extern const int GLOBAL_CONST_VAR;並在一個源文件中const int GLOBAL_CONST_VAR = 0xFF;
我的項目需要很多常量,比如太陽常數。有些用於std :: array,例如nvegetation_type,nrock_type。
我以前使用方法5,所以只有一個頭用於所有其他源文件。但多個定義問題出現類似於: Multiple definition and header-only libraries 這裏: Why aren't my include guards preventing recursive inclusion and multiple symbol definitions?
但這樣子在我的Visual Studio C++項目不是一個問題,我不知道爲什麼呢。我在Linux下使用makefile並編譯。
然而,當我使用方法6和C++ 11作爲
extern const int nvegetation_type ;
const std::array< double, nvegetation_type > some_variable
= { { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1} };
我將獲得像誤差限定在其他源頭文件數組:
error C2065: 'nvegetation_type': undeclared identifier.
我假定當我使用頭/源方法,我不能直接交叉引用全局變量,至少對於std :: array。 我讀了一些類似的鏈接,但沒有人提到過這個(也許我的搜索是不吉利的)。 http://www.learncpp.com/cpp-tutorial/42-global-variables/ 那麼解決方案是什麼?
我不知道你在問什麼。 –
我會想這個錯誤是'未定義的標識符'而不是'未聲明的標識符'? – lfgtm
它確實看起來像一個奇怪的診斷(即使問題不是聯繫,所以你建議的選擇不太對) –