7

Wie können Sie in Visual C++ absichtlich eine Compilerwarnung (im Modell von #error, außer als Warnung) erstellen, die in der Fehlerliste mit der richtigen Datei- und Zeilennummer angezeigt wird?Absichtliche Compilerwarnungen für Visual C++, die in der Fehlerliste angezeigt werden?

GCC und andere Compiler bieten #warning, aber der MSVC-Compiler nicht.

Die "Lösung" um http://support.microsoft.com/kb/155196 analysiert nicht in der Visual Studio-Fehlerliste.

+0

sieht aus wie Sie verwirrt sind, was genau Stack Overflow ist. – Juliano

+0

Es ist ein S.O. Art von Frage. Ich würde auch gerne wissen, was andere besser machen würden. – Thomas

+0

@Juliano: Was genau findest du an dieser Frage zu beanstanden? Es ist sicherlich ein Thema und interessant. Es könnte ein Duplikat sein, aber ich konnte keine doppelte Frage finden. –

Antwort

10

Fügen Sie einfach diese zu Ihrem gemeinsamen Include-Datei (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) 

verwenden wie:

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

Der Compiler erzeugt folgende Ausgabe:

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

Und die Registerkarte "Fehlerliste" zeigt die Warnung in der Tabelle an:

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

genau wie eine normale Visual Studio Compiler-Warnung.

+1

Ich benutze eine ähnliche Implementierung (ich habe es [als Antwort auf eine andere Frage]) (http://stackoverflow.com/questions/2703528/what-code-have-you-written-with-pragma- Sie-gefunden-nützlich/2706693 # 2706693)). Ich erkannte nicht, dass Visual C++ den Text einer Pragma-Direktive ersetzen würde; Das ist sehr cool. –

+1

In einem verwandten Hinweis können Sie auch "Fehler" anstelle von "Warnung" im Ausgabetext verwenden; Dies führt dazu, dass die Kompilierung fehlschlägt (wie '# error'), aber die Kompilierung kann bis zum Ende der Übersetzungseinheit fortgesetzt werden (was in einigen Szenarien außerordentlich nützlich ist). –

1

Dies ist eine Art eine dumme Antwort auf Ihre Frage, aber oft, wenn ich eine absichtliche Warnung hinzufügen müssen, werde ich so etwas wie ein:

#pragma asdfkljasdlfjasklfjklasjdfklj 

, die eine Unknown Pragma Warnung mit Zeilennummer ausgibt und alle .

+0

Das druckt die tatsächliche Nachricht in der Compiler-Ausgabe und der Fehlerliste jedoch nicht. Es erscheint nur "unbekanntes Pragma". – Thomas