2011-01-20 1 views
10

Ce qui suit est une version simplifiée d'un modèle que je vois parfois dans le code de mes étudiants:Puis-je traiter un avertissement spécifique comme une erreur?

bool foobar(int a, int b) 
{ 
    if (a < b) return true; 
} 

Le code réel est plus complexe, bien sûr. Visual Studio signale un avertissement C4715 (tous les chemins de contrôle ne renvoient pas une valeur) et je souhaite traiter tous les avertissements C4715 comme des erreurs. Est-ce possible?

+4

Vous devriez certainement traiter tous les avertissements comme des erreurs. :) – GManNickG

+0

@GMan: Bien que dans le cas général je suis d'accord. Il est parfois nécessaire de pouvoir faire des choses spécifiques. –

Répondre

34

Cela devrait faire l'affaire: #pragma warning (error: 4715).
Ou l'option de ligne de commande /we4715 (voir /w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level) (avec la permission de Tom Sigerdas)).

+0

Est-ce que 'pragma' doit être dans tous les fichiers pour être compté dans le projet? – TankorSmash

+2

documentation: [/ w,/Wn,/WX,/mur,/wln,/wdn,/wen,/won (niveau d'avertissement)] (https://msdn.microsoft.com/fr-fr/library/thxezb7y .aspx) –

+0

@TomSirgedas Merci pour le lien de la documentation. –

2

Définissez le niveau d'avertissement du compilateur sur le niveau 4 (dans Visual Studio) et tous les avertissements seront traités comme des erreurs. Il est recommandé que vos élèves compilent leur code sans avertissements et sans erreurs de toute façon :)

Activez également l'option du compilateur/WX.

+2

Non ce ne sera pas. Pas à moins que vous le disiez. C'est une bonne pratique de régler les deux, mais le réglage au niveau 4 n'est pas suffisant pour faire une erreur sur un avertissement. –

+0

Vous avez également besoin de '/ WX' (traiter les avertissements comme des erreurs) bien sûr. – bobbogo

+0

J'ai oublié de mentionner l'option/WX. Edité pour réparer. –

1

Oui,/we4715 fonctionne pour moi. Dans Visual Studio 2013 de toute façon, il est dans l'interface utilisateur sous Paramètres du projet -> Propriétés de configuration -> C/C++ -> Avancé -> Traiter les avertissements spécifiques comme des erreurs. Ajouter "4715". Ouais, c'est fou, que pensent-ils dans le standard C++? Peut-être que certains (mauvais) codes hérités l'exigent. Au moins, il y a une solution.

Docs: http://msdn.microsoft.com/en-us/library/thxezb7y.aspx

Et oui, cette page répertorie la mauvaise propriété de l'interface utilisateur pour VS2013. Parce que MSDN est génial!

Questions connexes