J'ai une section de code qui peut être résumée comme suit;Pourquoi le code suivant ne génère pas d'avertissement dans MSVC
void MyFunc()
{
int x;
'
'
x;
'
'
}
j'aurais pensé que le référencement simplement une variable, sans le modifier de toute façon ou d'utiliser de toute façon sa valeur devrait générer un avertissement. Dans VS2003, il ne fait ni l'un ni l'autre, et j'ai besoin de charpie pour le ramasser.
Je me rends compte que cela n'affecte pas l'exécution, mais comme c'est un morceau de code qui ne fait rien, et que le programmeur voulait sans doute faire quelque chose, pourquoi n'est-il pas marqué?
De même, attendez-vous que x = x soit un avertissement?
Modifier: La question a été modifiée, car cela constitue un bon candidat pour un avertissement, mais n'est pas une erreur. Les réponses suggèrent que cela est mieux géré avec d'autres compilateurs. Essayera VS2008 plus tard et afficher le résultat.
pourquoi cela donnerait-il une erreur, la syntaxe est correcte. – Grumpy
Peut-être pas une erreur, mais certainement un avertissement. if (x = y) est syntaxiquement correct, mais généralement pas ce que le programmeur voulait.Je dirais que tout code qui n'est probablement pas ce que le programmeur a prévu devrait générer un avertissement, et je ne vois pas comment ajouter une instruction au code qui ne fait pas l'intention de la plupart des programmeurs la plupart du temps. –