c - 从 C 中的函数返回枚举?

标签 c function enums

如果我在头文件中有类似下面的内容,我该如何声明一个返回 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;
}

关于c - 从 C 中的函数返回枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/742699/

相关文章:

c - 如何在shellcode中处理3字节地址

c - 如何使用 C 覆盖文件内的结构?

javascript - 为什么这个函数返回真?

R:对每行内的内容进行四舍五入,使行总计等于我指定的数字

c - C语言写入txt文件并打印数据

string - Go 中的可打印枚举

java - 如何在 Java 中模拟另一个枚举中的枚举?

c - 如何在 Visual Studios 中使用 CreateProcess 函数

c - C 中指针内存地址到二进制转换?

c++ - 如何解决编译器枚举重新声明冲突