проблема при использовании enum для таких операторов, как +, - в c - PullRequest
0 голосов
/ 26 декабря 2009

Я пытаюсь перечислить некоторые операторы, моя строка кода:

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

когда я пытаюсь скомпилировать эту строку, gcc говорит: ожидаемый идентификатор до токена "+"

Итак, как мне перечислить эти операторы? Можем ли мы использовать некоторые escape-символы для них?

Ответы [ 5 ]

7 голосов
/ 26 декабря 2009

Ваша лучшая ставка выглядит примерно так:

enum Operations
{
  Plus=4,
  Minus,
  Mod,
  LessThan,
  MoreThan
}
4 голосов
/ 26 декабря 2009

Перечисления должны быть идентификаторами, вы не можете использовать голые символы. Итак,

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

будет работать. (Я угадываю, что вы хотите выразить, я, вероятно, далеко, но это природа догадок.)

Если бы вы могли сказать нам, что вы на самом деле хотите сделать, мы, вероятно, можем ответить вам лучше.

3 голосов
/ 26 декабря 2009

Нет, вы не можете. Вам необходимо присвоить им имена, как и любому идентификатору:

enum operations
{
    PLUS = 4, // +
    MINUS,    // -
    MOD,      // %
    LESS,     // <
    GREATER   // >
};
2 голосов
/ 26 декабря 2009

Перечисление - это список идентификаторов, которые имеют определенное значение. В качестве имен идентификаторов нельзя использовать такие символы, как +, =, <,> и т. Д.

Вам нужно будет прописать имена, например:

enum Operators
{
  Plus,
  Equals,
  LessThan,
  GreaterThan
}
1 голос
/ 27 декабря 2009

Кроме того, учтите, что в вашем коде

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

последовательность += анализируется как оператор выражения присваивания + =. Этому можно помочь, вставив пробел между + и = - только это приведет к еще одной ошибке компилятора.

...