2009-12-26 41 views
0

我想列举一些运营商,我的代码行是:问题 - 在C

enum operations{+=4,-,%,<,>} 

当我试图编译这一行,GCC表示:预期'+'标记之前的标识符

那么,我该如何枚举这些运算符。我们可以为他们使用一些转义字符吗?

回答

7

最好的办法是这样的:

enum Operations 
{ 
    Plus=4, 
    Minus, 
    Mod, 
    LessThan, 
    MoreThan 
} 
3

不,你不能。您需要为它们指定名称,就像您对任何标识符所做的一样:

enum operations 
{ 
    PLUS = 4, // + 
    MINUS, // - 
    MOD,  // % 
    LESS,  // < 
    GREATER // > 
}; 
2

枚举是具有定义值的标识符列表。您不能使用+,=,<,>等字符作为标识符的名称。

你需要拼出来的名字,如:

enum Operators 
{ 
    Plus, 
    Equals, 
    LessThan, 
    GreaterThan 
} 
4

枚举必须是标识符,则不能使用裸符号。所以,

enum operations { inc_by_4, minus, modulus, less_than, greater_than }; 

会工作。 (我猜你想要表达什么,我可能会离开,但这就是猜测的本质。)

如果你能告诉我们你真正想做什么,我们可能会更好地回答你。

+0

似乎我误读了+ = 4,但后来......我的C显然有点生疏。 ;-)有趣的是,在这几个例子中可以看到各种样式(并且......我当然会在实际的(生产)代码中将它分散到更多的行上,但是Python不会无论如何都有枚举;-)) – 2009-12-26 12:33:09

+0

我不认为你误解了它。 '+ = 4'作为*增加四*是一个完全合理的解释。 – wallyk 2009-12-28 02:05:52

1

此外,请考虑到,在代码

enum operations{+=4,-,%,<,>}

序列+=被解析为+ =赋值表达式运算符。这可以通过在+=之间插入一个空格来帮助 - 只有这样会产生另一个编译器错误。