如果我在头文件中有类似的内容,如何声明一个返回类型为Foo的枚举的函数?
enum Foo
{
BAR,
BAZ
};
我可以做以下事情吗?
Foo testFunc()
{
return Foo.BAR;
}
或者我需要使用typedef或指针吗?
答案 0 :(得分:43)
在C ++中,你可以只使用Foo。
在C中,必须使用枚举Foo,直到为它提供typedef。
然后,当您引用BAR时,您不使用Foo.BAR
而只使用BAR
。所有枚举常量都共享相同的命名空间。
因此(对于C):
enum Foo { BAR, BAZ };
enum Foo testFunc(void)
{
return BAR;
}
或者,使用typedef
:
typedef enum Foo { BAR, BAZ } Foo;
Foo testFunc(void)
{
return BAR;
}
答案 1 :(得分:4)
我相信enum
中的各个值本身就是标识符,只需使用:
enum Foo testFunc(){
return BAR;
}
答案 2 :(得分:2)
我认为某些编译器可能需要
typedef enum tagFoo
{
BAR,
BAZ,
} Foo;
答案 3 :(得分:2)
enum Foo
{
BAR,
BAZ
};
在C中,返回类型应该在它之前有枚举。当您使用单独的枚举值时,您不会以任何方式限定它们。
enum Foo testFunc()
{
enum Foo temp = BAR;
temp = BAZ;
return temp;
}