7

Comment pouvez-vous créer un avertissement de compilateur (dans le modèle de #error, sauf comme un avertissement) à dessein dans Visual C++ qui apparaîtra sur la liste d'erreurs avec le bon fichier et numéro de ligne?Avertissements du compilateur intentionnels pour Visual C++ qui apparaissent dans la liste d'erreurs?

GCC et d'autres compilateurs offrent un avertissement, mais pas le compilateur MSVC.

La "solution" à http://support.microsoft.com/kb/155196 n'analyse pas dans la liste d'erreurs Visual Studio.

+0

On dirait que vous n'êtes pas sûr de ce qu'est exactement Stack Overflow. – Juliano

+0

C'est un S.O. sorte de question. J'aimerais aussi savoir ce que les autres feraient mieux. – Thomas

+0

@Juliano: Que trouvez-vous exactement répréhensible à propos de cette question? C'est très certainement sur le sujet et intéressant. Ce pourrait être un doublon, mais je n'ai pas pu trouver une question en double. –

Répondre

10

ajouter ceci à votre fichier comprennent commun (ex, stdafx.h):

#define __STR2__(x) #x 
#define __STR1__(x) __STR2__(x) 
#define __LOC__ __FILE__ "("__STR1__(__LINE__)") : warning W0000: #pragma VSWARNING: " 
#define VSWARNING(x) message(__LOC__ x) 

Utilisez ce comme:

#pragma VSWARNING("Is this correct?!?!") 

Le compilateur sortie:

c:\dir\file.h(11) : warning W0000: #pragma VSWARNING: Is this correct?!?! 

Et l'onglet Liste d'erreurs montrera bien l'avertissement dans le tableau:

Type  Num Description            File Line 
[Warning] 13 warning W0000: #pragma VSWARNING: Is this correct?!?! file.h 11 

exactement comme un avertissement de compilateur Visual Studio normal.

+1

J'utilise une mise en œuvre similaire à cela (je l'ai posté [en réponse à une autre question] (http://stackoverflow.com/questions/2703528/what-code-have-you-written-with-pragma- vous-trouvé-utile/2706693 # 2706693)). Je n'ai pas réalisé que Visual C++ remplacerait le texte d'une directive pragma; c'est très cool. –

+1

Sur une note connexe, vous pouvez également utiliser "erreur" au lieu de "avertissement" dans le texte de sortie; cela provoque l'échec de la compilation (comme le fait '# error'), mais permet à la compilation de continuer jusqu'à la fin de l'unité de traduction (ce qui est extraordinairement utile dans certains scénarios). –

1

C'est une sorte de réponse stupide à votre question, mais souvent, si je dois ajouter un avertissement intentionnel, je vais taper quelque chose comme:

#pragma asdfkljasdlfjasklfjklasjdfklj 

qui émet un Unknown Pragma avertissement avec numéro de ligne et tous .

+0

Cela n'imprime pas le message réel dans la sortie du compilateur et la liste d'erreurs, cependant. Seul "pragma inconnu" apparaît. – Thomas

Questions connexes