c:带有函数实现的内联枚举

时间:2012-01-24 21:21:10

标签: c enums inline

我遇到过一些c代码,其中有一个枚举类型后跟一个函数实现,例如:

enum OGHRet funcX ( OGH *info, void *data, int size )
{
    /* c code that does stuff here */
}

我对这个枚举语句如何与函数实现内联工作感到困惑。 我假设它是funcX的返回类型,但为什么用enum明确声明?

提前致谢。

4 个答案:

答案 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 ++中,您可以省略它。

另见this question