从 C 中的函数返回枚举?
如果头文件中有类似以下内容,如何声明返回 Foo 类型枚举的函数?
enum Foo
{
BAR,
BAZ
};
我可以做类似下面的事情吗?
Foo testFunc()
{
return Foo.BAR;
}
或者我需要使用 typedef 或指针之类的吗?
If I have something like the following in a header file, how do I declare a function that returns an enum of type Foo?
enum Foo
{
BAR,
BAZ
};
Can I just do something like the following?
Foo testFunc()
{
return Foo.BAR;
}
Or do I need to use typedefs or pointers or something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在 C++ 中,您可以只使用
Foo
。在 C 中,您必须使用
enum Foo
,直到您为其提供 typedef。然后,当您引用
BAR
时,您不会使用Foo.BAR
,而只是使用BAR
。 所有枚举常量共享相同的命名空间(“普通标识符”命名空间,由函数、变量等使用)。因此(对于 C):
或者,使用
typedef
:In C++, you could use just
Foo
.In C, you must use
enum Foo
until you provide a typedef for it.And then, when you refer to
BAR
, you do not useFoo.BAR
but justBAR
. All enumeration constants share the same namespace (the “ordinary identifiers” namespace, used by functions, variables, etc).Hence (for C):
Or, with a
typedef
:我相信
enum
中的各个值本身就是标识符,只需使用:I believe that the individual values in the
enum
are identifiers in their own right, just use:我认为有些编译器可能需要
I think some compilers may require
在 C 中,返回类型前面应该有 enum。 当您使用各个枚举值时,您不会以任何方式限定它们。
In C, the return type should have enum before it. And when you use the individual enum values, you don't qualify them in any way.