typedef enum 和enum的区别

这个是在stackoverflow上面看到的,参考链接:http://stackoverflow.com/questions/385023/why-do-you-use-typedef-when-declaring-an-enum-in-c

就比如说:

typedef enum ssTokenType
{
    blah1   = 0x00000000,
    blah2   = 0X01000000,
    blah3   = 0X02000000
} TokenType;
enum TokenType
{
    blah1 = 0x00000000,
    blah2=0x01000000,
    blah3=0x02000000
};

这两个的区别主要是在c语言上面不同

严格意义上来说:

如果你使用了第一种

你必须这样定义

TokenType my_type;

而如果使用了第二种

则这样定义

enum TokenType my_type;

而在C++里面你必须使用第二种表达方式

enum TokenType
{
    blah1   = 0x00000000,
    blah2   = 0X01000000,
    blah3   = 0X02000000
};

但是使用这样的定义

TokenType foo;

当然这是严格意义上来说,但是具体使用上面,因为C++兼容C语言,并且现在的编译器都很智能,所以你即使混乱了,有时候也是没有错误的

Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

Leave a Comment