【发布时间】:2009-04-13 00:24:36
【问题描述】:
如果我在头文件中有如下内容,我该如何声明一个返回 Foo 类型枚举的函数?
enum Foo
{
BAR,
BAZ
};
我可以做如下的事情吗?
Foo testFunc()
{
return Foo.BAR;
}
或者我需要使用 typedef 或指针之类的吗?
【问题讨论】:
如果我在头文件中有如下内容,我该如何声明一个返回 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;
}
【讨论】: