Cette question n'est pas liée à un avertissement spécifique du compilateur, ce qui suit n'est qu'un exemple.
Actuellement, lorsque je veux une boucle qui vérifie une condition de sortie à l'intérieur :
while( true ) {
doSomething();
if( condition() ) {
break;
}
doSomethingElse();
}
Je ne peux pas écrire cela en Visual C++ - cela émettrait un C4127. conditional expression is constant
avertissement. Le compilateur me le brandira au visage bien qu'il soit évident que while(true)
ne peut pas avoir été écrit accidentellement.
Supposons que je veuille un code qui se compile sans avertissement. Il y a solutions de contournement à mon service.
Première solution est d'utiliser for(;;)
mais cela semble stupide - pourquoi voudrais-je cette chose bizarre au lieu d'une idiomatique élégante et concise ? while(true)
? Deuxième solution est d'utiliser #pragma warning( suppress)
antes de while( true )
mais elle ajoute une énorme bannière qui est deux fois plus grande que la while
La déclaration elle-même. Troisième solution est de désactiver C4127 pour l'ensemble du projet (je l'ai vu faire dans un projet réel) mais alors toutes les instances utiles possibles de C4127 sont également désactivées.
Existe-t-il un moyen élégant de se débarrasser d'un avertissement inutile ?