Bonjour !

Réalisant un analyseur de code XML, je dois tester pas mal de conditions pour savoir si ce que je trouve dans le code XML doit être mémorisé ou ignoré.

Et là, je me demandais s'il était possible de faire un switch / case mais en testant les valeurs d'un couple de variables. Après quelques recherches rapides mais infructueuses sur le net, je me prend en main et j'essaye dans Codeblocks (Windows XP) pour voir si ça compile.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdlib.h>
#include <stdio.h>
 
int main(void)
{
    int a = 1;
    int b = 2;
 
    switch(a,b)
    {
        default:
            break;
    }
    system("pause");
}
Ca, ça compile sans warning.

En revanche,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdlib.h>
#include <stdio.h>
 
int main(void)
{
    int a = 1;
    int b = 2;
 
    switch(a,b)
    {
        case(1,2):
            puts("OMG !\n");
            break;
        default:
            break;
    }
    system("pause");
}
ne compile pas et me met comme erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
...|11|error: a comma operator cannot appear in a constant-expression|

Alors la question : hasard que le premier code compile ou est-ce que ça peut vraiment marcher ? Si oui, comment écrire ça pour ne pas avoir l'erreur citée SVP ?


Merci d'avance !


PS : dans mon application, le switch serait à faire sur un couple de variables définies à l'aide d'un typedef enum.