C++枚舉語法
回答
enum MyEnumType { ALPHA, BETA, GAMMA };
enum MyEnumType x; /* legal in both C and C++ */
MyEnumType y; // legal only in C++
enum { HOMER, MARGE, BART, LISA, MAGGIE };
在C語言之間的任何差異(相對於C++),要創建一個名稱color
,您必須鍵入typedef enum scolor {red, blue, green} color;
,或者使用定義的問題包含,使用enum colour a = blue;
- 否則,編譯器將不知道什麼color
是。
在C++中,任何struct X
,class Y
,或enum Z
,將自動別名X
如struct X
和Y
作爲class Y
和Z
作爲enum Z
- 從而減少了需要typedef struct X X;
等(儘管這仍然是有效的,因爲C++是,作爲一個整體,向後兼容C)。
這兩種形式在C++中同樣有效。這是你喜歡的風格問題。
假設沒有其他聲明color
可用,它們意味着同樣的事情。但是,提供color
的不同定義是有效的,並且enum color
可用於確保使用該類型。
enum color { red, blue, green };
color color(const char *);
enum color a = red;
在第二行,指定返回類型color
是有效的,並且是指enum color
。在第三行,enum
關鍵字是必需的,因爲color
否則會引用第二行中聲明的函數。
但實際上,enum color
和color
幾乎意味着同樣的事情。
嗨我試過你的代碼,但得到一個錯誤:錯誤:鍵入'main():: color'沒有連接用於聲明函數'main():: color color(const char *)'with linkage [-fpermissive] | 。我不知道它是什麼意思。 – focusHard
@focusHard:將函數定義移到main(https://ideone.com/RgWBZx)之外:http://stackoverflow.com/questions/16053148/type-with-no-linkage-used-to-declare-function -with-linkage – Bill
@focusHard你把它放在一個函數中,在這種情況下'enum color'是一個函數本地類型,它不能作爲外部函數的參數。通常,雖然允許您定義函數本地類型,但是如何使用這些類型還有一些限制。我曾打算在我的答案中使用代碼作爲完整,有效的翻譯單元。 – hvd
- 1. C#語言枚舉聲明
- 2. C#枚舉術語混淆
- 3. JavaScript對象枚舉語法
- 4. 無法施展C#枚舉C++枚舉當枚舉是第三裝配
- 5. C中枚舉的方法#
- 6. 在枚舉語句中枚舉mysql枚舉
- 7. 多語言枚舉
- 8. C++與枚舉
- 9. C++和枚舉
- 10. Objective-C枚舉
- 11. 在C#枚舉#
- 12. 枚舉C++類
- 13. 枚舉在C++
- 14. C++的枚舉
- 15. 枚舉在C
- 16. C++枚舉
- 17. C#。枚舉
- 18. C++枚舉
- 19. 爪哇枚舉和Objective-C枚舉
- 20. C#:枚舉IEnumerable的循環枚舉
- 21. C++ - 程序中的多枚舉枚舉
- 22. 與protobuf的枚舉替換C++枚舉
- 23. 如何枚舉Objective-C中的枚舉?
- 24. C語言枚舉數據類型?
- 25. phpmyadmin /創建表/語法錯誤/枚舉
- 26. C++通過枚舉
- 27. scanf()與C++枚舉
- 28. 鍵枚舉C#,AltKey
- 29. C#FindElement ClassName枚舉
- 30. 枚舉值在C++
更多C的東西,真的。這與'struct'的處理方式相同。 – chris
'color a = blue;'如果你做了類似''enum color {blue} color;''的話''不起作用。在這種情況下,你需要'enum color a = blue;'來區分對象和類型。當然,你不應該以這種方式重載枚舉名稱。 – bames53