2013-12-13 57 views
0

我有一个枚举声明如下。声明枚举输出的函数

//declaring the situations can happen by next step 
enum step {CANGO, CANTGO, WILLFALL, LOSEPOINT, GAINPOINT}; 

我想delcare一个函数,它的输出是声明枚举。我该怎么做?

回答

4

简单:

enum step myfunction(); 

或者,如果你愿意,你可以使用typedef,但我不会推荐它,在这种情况下:

typedef enum step step; 

step myfunction(); 

要记住诀窍是,在C,一个枚举类型必须使用enum关键字引用,所以纯文本step不起作用,这可能是您首先尝试的。

当然,与typedef伎俩它的作品。你还可以更懒,写:

typedef enum step {CANGO, CANTGO, WILLFALL, LOSEPOINT, GAINPOINT} step; 

但我的意见是一个枚举必须看起来像一个枚举(类似结构的结构体,等等),这typedef隐藏了。

+0

为什么不推荐'typedef'在这种情况下? –

+1

@MelikaBarzegaranHosseini:因为你隐藏了类型的本质。如果你的意图是隐藏它是一个枚举(即一个抽象数据类型),然后继续,但如果不是,typedef只会混淆代码并混淆代码的读者。 – rodrigo

+0

强大到足以改变我的意见,我最好不要使用它。和一个很好的帮助。谢谢。 :) –