Forum Programmation.c #define et switch...

Posté par .
Tags : aucun
0
20
déc.
2006
Bonjour tout le monde,

Ca fait quelques années que je n'ai pas fait de C, mais tout de même...
J'ai un bout de code qui ressemble à ça :

#define TOTO 5;

[...]
switch(valeur){
case TOTO:
[...]
}


Et à la compilation, j'obtiens un :
error: expected ‘:’ or ‘...’ before ‘;’ token
error: expected expression before ‘:’ token

les deux erreurs correspondent à la ligne 'case TOTO:'

Bien entendu, si je remplace TOTO par 5, ca marche. Mais le but était de rendre le truc lisible...

Je suis persuadé qu'il est possible de faire ce genre de chose, mais je ne vois vraiment pas où est ma connerie...

Je compile tout simplement avec une gcc -o prog fichier1.c fichier2.c etc...

Si une bonne ame veut bien m'aider et/ou me rafraichier la memoire... Merci !
  • # Un point virgule en trop

    Posté par . Évalué à 5.

    C'est :

    #define TOTO 5

    sans le point virgule final qu'il faut utiliser pour la définition de ta macro. Sinon, le point virgule vient polluer la syntaxe du case, et probablement des futurs utilisations de TOTO dans ton code.

    --
    http://www.tessier-net.org
    • [^] # Re: Un point virgule en trop

      Posté par . Évalué à 2.

      Bon sans mais c'est bien sur !

      L'erreur venait bien des années passées sans rien coder... D'un autre coté, c'est completement logique en plus...

      Merci
  • # un sujet

    Posté par . Évalué à 6.

    #define paaas bien
    enum, consts etc... bieeeeeen

    Les enums dans les switchs sont mieux traitées par gcc qui informe des valeurs non-testées, Les noms des consts et enums sont visibles lors des sessions de debugs, etc...

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.