在使用c++的列舉過程中會出現列舉變數重複的情況,特別是這兩個列舉的作用域相同的情況下,如:
enum
house ;
enum
computer ;
編譯的時候,就會報錯:
錯誤 1 error c2365: 「big」: 重定義;以前的定義是「列舉數」 e:\test
\qtguitest
\win32newmem\maincpp.cpp 20 1 win32newmem
錯誤 2 error c2365: 「small」: 重定義;以前的定義是「列舉數」 e:\test
\qtguitest
\win32newmem\maincpp.cpp 22 1 win32newmem
就會出現如上的重複定義的錯誤。
解決:
c++ 11提供了一種新的列舉類,其列舉的作用域為類:
enum
class
house ;
enum
class
computer ;
這樣編譯的時候就不會出錯了。
使用要加上列舉名來限定列舉量:
house h = house::big;
computer c = computer::small;
C變數重複定義錯誤
c c 語言中有很多地方要用到extern,但是如果沒有真正的了解它的意義,會給程式設計帶來很大的麻煩,為了使大家少走彎路,特祥細的說明一下。對於比較小的程式,一般只有乙個c檔案和乙個標頭檔案,全域性變數我們通常會直接定義在c檔案中,在程式之前加int i定義。如果要在標頭檔案中定義有以下兩種方法 ...
C 中的列舉變數
是c 提供的一種建立符號常量的方式,這種方式可以代替const。include using namespace std int main 建立後,fruit成為了新型別的名稱,上述 輸出為 1.即代表著大括號中的都為符號常量了,分別為0 6.在列舉中,不進行強制型別轉換的情況下,只能將定義的列舉量賦...
在C 中定義全域性變數時避免重複定義
問題 如何在c 中定義全域性變數時避免重複定義呢?今天遇到問題,全域性變數重定義錯誤,印象中記得要加extern,但是怎麼都不對,找資料後得到了解決方案,記之。參考文獻 解決方案 只要在定義時盡量在.cpp檔案中進行,而不要在.h 檔案中定義。定義好了之後,可以在.h檔案中利用extern關鍵字進行...