C 中列舉變數出現定義重複

2021-08-13 09:07:42 字數 726 閱讀 3531

在使用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關鍵字進行...