从C中的函数返回枚举?

Pau*_*cks 27 c enums function

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

enum Foo
{
   BAR,
   BAZ
};
Run Code Online (Sandbox Code Playgroud)

我可以做以下的事情吗?

Foo testFunc()
{
    return Foo.BAR;
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ler 47

在C++中,你可以只使用Foo.

在C中,必须使用enum Foo,直到为它提供typedef.

然后,当你提到BAR时,你不要Foo只使用它enum Foo.所有枚举常量共享相同的命名空间.

因此(对于C):

enum Foo { BAR, BAZ };

enum Foo testFunc(void)
{
    return BAR;
}
Run Code Online (Sandbox Code Playgroud)

或者,用BAR:

typedef enum Foo { BAR, BAZ } Foo;

Foo testFunc(void)
{
    return BAR;
}
Run Code Online (Sandbox Code Playgroud)


dmc*_*kee 5

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

enum Foo testFunc(){
  return BAR;
}
Run Code Online (Sandbox Code Playgroud)