从C中的函数返回枚举?

如果我在头文件中有类似下面的内容,我如何声明一个返回类型为Foo的枚举的函数?

enum Foo { BAR, BAZ }; 

我可以做以下的事情吗?

 Foo testFunc() { return Foo.BAR; } 

或者我需要使用typedef或指针或什么?

在C ++中,您可以只使用Foo。

在C中,必须使用enum 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; } 

我相信enum中的各个值本身就是标识符,只需使用:

 enum Foo testFunc(){ return BAR; } 

我认为有些编译器可能会要求

 typedef enum tagFoo { BAR, BAZ, } Foo; 
 enum Foo { BAR, BAZ }; 

在C中,返回类型应该在它之前有枚举。 当您使用单独的枚举值时,您不会以任何方式限定它们。

 enum Foo testFunc() { enum Foo temp = BAR; temp = BAZ; return temp; }