[英]enumerations in C from a c++ perspective
我是一名C ++程序員,我很少需要處理GCC“C”。 我目前正在將一些代碼從C ++轉換為C,以便與GCC編譯器一起使用。
在C ++中,我將使用以下源代碼。 請注意,我會使用一個類作為范圍。
C ++來源
class Card {
public:
enum Suit {
Diamonds, Hearts, Clubs, Spades
};
};
class Weapon {
public:
enum WeaponType {
Rocks, Clubs, Guns
};
};
int main () {
Suit a = Card::Clubs;
WeaponType b = Weapon::Clubs
}
在“C”中沒有類別,也沒有辦法區分兩個不同的“俱樂部”關鍵詞。 嘗試編譯時,我收到以下錯誤消息
錯誤C2365:'俱樂部':重新定義; 以前的定義是'枚舉'
C來源
enum Suit {
Diamonds, Hearts, Clubs, Spades
};
enum WeaponType {
Rocks, Clubs, Guns
};
int main () {
Suit a = Clubs;
WeaponType b = Clubs
}
所以我的問題是
就像過去一樣:
enum Suit {
ST_Diamonds, ST_Hearts, ST_Clubs, ST_Spades
};
enum WeaponType {
WT_Rocks, WT_Clubs, WT_Guns
};
int main () {
Suit a = ST_Clubs;
WeaponType b = WT_Clubs;
return 0;
}
這不能在標准C中完成。來自CA參考手冊 :“聲明為枚舉常量的標識符與變量函數和typedef名稱在同一重載類中”,因此枚舉常量在給定范圍內必須是唯一的。
由於C中缺少名稱空間,您唯一的選擇是前綴:
enum Weapon {
WeaponRocks,
WeaponSocks,
...
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.