从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; }