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