2010-10-01 6 views
0

J'étais curieux de savoir si le code suivant devrait se traduire par un avertissement ou non par le compilateur g ++:Ne devrait pas être ces avertissements avec g ++ -Wall?

// Snip #1 
bool x = 0; 
x++; 

// Snip #2 
switch (x) { 
default: 
    printf("hi\n"); 
} 

Le problème est de telles déclarations existent dans un code existant je travaille sur: - |, je suppose qu'il devrait y avoir avertissements pour ceux-ci?

J'ai g ++ - 4.4.3c

+1

Quels avertissements attendez-vous? Lancer un avertissement dans le cas 2 pour "variable non utilisée x" est délicat car, pour tout le compilateur sait, il y avait * cas * dans ce commutateur, mais le préprocesseur les a mangés. –

+0

correct. cela exclut la seconde. – sud03r

+0

Si vous aviez un bon compilateur, il vous avertirait que l'incrémentation d'un booléen est une fonctionnalité de langage obsolète. –

Répondre

1

L'incrémentation d'un bool est une fonction obsolète, mais elle est toujours valide et permet d'atteindre le résultat souhaité, par conséquent un avertissement ne devrait pas apparaître, c'est simplement une mauvaise pratique de le faire.

1

Avec gcc, -Wall ne se transforme pas en fait sur tous les avertissements. La page de manuel couvrira toutes vos options, mais pour être vraiment complet, utilisez "-Wall -Weff-C++ -pedantic -Werror".

Questions connexes