2009-12-26 10 views
0

Je suis en train d'énumérer certains opérateurs, ma ligne de code est:lors de l'utilisation ENUM pour les opérateurs comme +, - en c

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

quand je suis en train de compiler cette ligne, gcc dit: prévu identifiant avant le jeton "+"

Donc, comment puis-je énumérer ces opérateurs. Pouvons-nous utiliser des caractères d'échappement pour eux?

Répondre

7

Votre meilleur pari est quelque chose comme ceci:

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

Non, vous ne pouvez pas. Vous devez leur attribuer des noms, comme vous le feriez pour n'importe quel identificateur:

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

Une énumération est une liste d'identificateurs qui ont une valeur définie. Vous ne pouvez pas utiliser des caractères tels que +, =, <,>, etc. comme noms d'identifiants.

Vous aurez besoin de préciser les noms, tels que:

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

énumérations doivent être des identifiants, vous ne pouvez pas utiliser des symboles nus. Ainsi,

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

fonctionnerait. (Je devine ce que vous voulez exprimer, je suis probablement loin, mais c'est la nature des conjectures.)

Si vous pouviez nous dire ce que vous voulez vraiment faire, nous pouvons probablement vous répondre mieux.

+0

Semble que j'ai mal lu le + = 4, mais alors ... mon C est évidemment un peu rouillé. ;-) Intéressant, cependant, est la variété de styles visibles dans ces quelques exemples (et ... Je l'étalerais certainement sur plus d'une ligne dans le code (de production) réel. Mais là encore, Python ne le fait pas enums de toute façon ;-)) –

+0

Je ne pense pas que vous l'avez mal lu. '+ = 4' comme * incrément de quatre * est une interprétation tout à fait raisonnable. – wallyk

1

En outre, s'il vous plaît prendre en compte dans votre code

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

la séquence += est analysée comme + = expression opérateur d'affectation. Cela pourrait être aidé en insérant un espace entre + et = - seulement cela donnerait encore une autre erreur de compilateur.