为什么在C ++枚举定义中需要typedef

时间:2013-06-10 09:14:25

标签: c++ visual-c++ gcc

我在头文件中看到以下内容

typedef enum Test__tag {
    foo,
    bar
} Test;

我想知道为什么要使用typedef;我可以使用

enum Test{
    foo,
    bar
};

是吗?

2 个答案:

答案 0 :(得分:11)

适用于C用户。基本上当你走typedef方式时,在C中你可以说

Test myTest;

而当你刚使用enum Test时,你必须声明一个这样的变量:

enum Test myTest; 

如果只使用C ++,则不需要它。所以它也可能只是由习惯于这种风格的C程序员编写的。

答案 1 :(得分:3)

是的,在C ++中,只需编写

即可声明x而不使用typdef
 enum Test{
    foo,
    bar
};
Test x;

但是,如果您在C中尝试相同的操作,则需要将x声明为

 enum Test x;

或使用typedef。

因此typedef可能是C遗留的习惯(除非头文件实际上是C)。