Dans certains fichier d'en-tête que je ne peux pas modifier je l'ensemble des defines suivantes:Le soulignement est-il autorisé dans les étiquettes de cas?
#define FLAG1 (0x0000_0001)
#define FLAG2 (0x0000_0002)
...
Alors, dans mon code que je les utilise dans le commutateur:
switch (aaa) {
case FLAG1:
....
case FLAG2:
....
}
En conséquence, Coverity rapports sur 2 défauts par étiquette de cas:
RW.EXP_RPAREN:
Event exp_rparen: expected a ")"
RW.CASE_LABEL_CONFLICT:
Event case_label_conflict: case label value has already appeared in
this switch at line XX
Qu'est-ce qui ne va pas avec ces étiquettes? Est-ce que cela viole les normes C?
Il ne devrait pas. 'case 4 * (1 + 2):' devrait aussi être valide. –
Quel est le trait de soulignement dans 0x0000_0001? Ce n'est pas valide C ... –
Si vous supprimez les traits de soulignement dans les constantes hexadécimales, cela devrait être bon. –