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 Gael Tessier . Évalué à 5.
#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 zerbro . Évalué à 2.
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 caribou4lin . Évalué à 6.
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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.