我遇到过一些c代码,其中有一个枚举类型后跟一个函数实现,例如:
enum OGHRet funcX ( OGH *info, void *data, int size )
{
/* c code that does stuff here */
}
我对这个枚举语句如何与函数实现内联工作感到困惑。 我假设它是funcX的返回类型,但为什么用enum明确声明?
提前致谢。
答案 0 :(得分:2)
它只是说它返回一个名为OGHRet的枚举,它将在别处定义。
这是一段代码片段,显示并排返回枚举的枚举和函数...
enum Blah { Foo, Bar };
enum Blah TellMeWhy()
{
return Bar;
}
答案 1 :(得分:1)
如果您定义这样的枚举类型:
enum OGHRet { foo, bar };
然后enum OGHRet
只是该类型的名称。您不能像OGHRet
那样引用类型;这是一个标记,仅在enum
关键字后可见。
为该类型设置单字名称的唯一方法是使用typedef - 但实际上没有必要这样做。如果您坚持能够拨打OGHRet
类型而不是enum OGHRet
,则可以执行以下操作:
typedef enum { foo, bar } OGHRet;
这里声明的枚举类型没有标记,然后typedef为它创建一个别名。
答案 2 :(得分:0)
也许是因为它没有被声明为typedef,如下所示:
enum OGHRet
{
FOO,
BAR
};
在这里,您需要通过enum OGHRet
引用它。
要仅使用OGHRet
,您需要这样做:
typedef enum _OGHRet
{
FOO,
BAR
}OGHRet;
答案 3 :(得分:0)
您需要使用enum
关键字为OGHRet
提供类型定义。在C ++中,您可以省略它。