Eigene Compiler Warnung zu erzeugen
-
martin_zi schrieb:
#warning geht gar nicht ...
"Geht garnicht" ist keine ausreichende Fehlermeldung.
Es ist allerdings so, dass #warning eine Erweiterung ist, die von einigen (aber eben nicht allen) Compilern angeboten wird, aber eben kein Standard. Genauso ist #pragma warning nicht 100%ig portabel: laut Standard darf jeder Compilerhersteller sich #pragmas ausdenken, andere Compiler müssen sie aber nicht auswerten. Du kannst also problemlos ein "#pragma Wurstbrot" in deinen Code schreiben, Standardkonforme Compiler sollten es ignorieren, dürfen evtl. noch eine Warnung ausspucken (MSVC mosert IIRC was von "unknown #pragma"), dürfen aber nicht wegen unbekannter #pragmas das compilieren abbrechen.
-
Und wenn du die Datei und Zeilennummer noch rausschreibst, führt ein Doppelklick auf die Nachricht im Ausgabefenster zu der entsprechenden Datei&Zeile (bei MSVC mit pragma message):
#pragma message( __FILE__ "(" PP_STRINGIZE(__LINE__) ") : " "Deine Nachricht" ) // Mit #define PP_STRINGIZE2(a) #a #define PP_STRINGIZE(a) PP_STRINGIZE2(a)
-
Nö
ich meinte eigentlich "#warning" geht gar nicht ...
Weil er das Schlüsselwort nicht kennt.
Error 3 fatal error C1021: invalid preprocessor command 'warning'Auch #pragma message( "Hello Mister Compiler" )
funktioniert nicht ...
Ich nutze übrigens MSVC2005 ...Auch das wird alles ignoeriert ...
http://www.codeproject.com/KB/macros/location_pragma.aspxMuss ich vielleicht dazu irgend eine Option am Compiler aktivieren ?
-
martin_zi schrieb:
Muss ich vielleicht dazu irgend eine Option am Compiler aktivieren ?
Gut möglich. Dafür wäre allerdings eher die Compiler-Doku die richtige Anlaufstelle, bzw. das Compilerforum. Ich verschiebe mal...
Am besten solche Infos wie den verwendeten Compiler immer gleich mitliefern, in diesem Fall sogar idealerweise gleich im Betreff.
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
martin_zi schrieb:
ich meinte eigentlich "#warning" geht gar nicht ...
Weil er das Schlüsselwort nicht kennt.
Error 3 fatal error C1021: invalid preprocessor command 'warning'Nicht umsonst meinte "test_it", dass #warning beim gcc funktioniert.
Auch #pragma message( "Hello Mister Compiler" )
funktioniert nicht ...
Ich nutze übrigens MSVC2005 ...Bei meinem MSVC2005 funktionierts. Optionen dazu sind mir nicht bekannt. Sicher, dass du die Ausgabe im Ausgabefenster nicht einfach übersiehst?
-
Jo hab ich sicher nicht übersehen.
Da steht nichts ...
Mein Testprogramm ist nicht groß .. nur ein Simples "Hello World"Ich weiß was test_it geschrieben hat und mir ist klar dass er den gcc nutzt.
Ich bezog die Aussage auf:
"Geht garnicht" ist keine ausreichende Fehlermeldung.
Nur um zu zeigen das ich meinte dass #warning nicht mal definiert ist ...
-
Wird denn irgendeine Warnung ausgegeben, dass am
#pragma message
irgendwas faul wäre? Oder erscheint einfach nur keine Ausgabe?
-
Nö es erscheint einfach keine Ausgabe.
Daher dachte ich vielleicht das es an irgendwelchen Einstellungen liegt.
Ich hab aber schon alles auf das maximum gestellt.Grüße ...
-
Dann lad doch mal irgendwo ein minimales Testprojekt mit allen nötigen Dateien hoch, was bei dir nicht funktioniert (Source- und Headerdateien, sln & vcproj-Dateien). Dann sieht man ja, ob's an den Einstellungen liegt.
-
Was heißt fuktioniert nicht?
Schau mal in das Build Fenster rein. #pragma message erzeugt dort in jedem Fall eine Zeile!
-
Hallo
Nun vielleicht reden wir aneinader vorbei ...
Ich spreche von der Error List. Da würde ich erwarten das diese Warning auch angezeigt wird.
Im Output-Fenster erscheint die Nachricht ...
Habe ich eben gesehen ...Gruß
-
int main() { #pragma message("Hello World!") }
Dann steht im Outputfenster sowas:
1>------ Build started: Project: TestProject, Configuration: Debug Win32 ------ 1>Compiling... 1>main.cpp 1>Hello World! 1>Linking... 1>LINK : ...Pfad.... not found or not built by the last incremental link; performing full link 1>Embedding manifest... 1>Build log was saved at "file://...Pfad...\Debug\BuildLog.htm" 1>TestProject - 0 error(s), 0 warning(s) ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Siehst du das "Hello World!"? Gleich nach "main.cpp".
Von der Verwendung der Error List rate ich persönlich ab. Meistens steht nur ein Bruchteil der Fehlermeldung dort und die zusätzliche Filterung braucht man meistens nicht. Mit einem Doppelklick in der Linie im Output Fenster kommt man auch zur Zeile des Fehlers.
Übrigens, hier noch einen Artikel zur Erzeugung von Warnings mit #pragma message. Es geht zwar mehr ums schöne Aussehen und der Artikel ist schon etwas älter, aber immer noch gültig:
http://support.microsoft.com/kb/155196/en-usGrüssli
-
Dravere schrieb:
Von der Verwendung der Error List rate ich persönlich ab.
Gibt es eigentlich eine Möglichkeit dieses Teil dazu zu bringen nie mehr zu erscheinen? Ich finde es äußerst nervig wenn es immer wieder aufpoppt. Mir reicht ebenfalls das Ausgabefenster, ich möchte beim Arbeiten nicht ständig gegängelt werden.
-
Hmm
Ja da sehe ich das ... Wie schon erwähnt dachte ich das der Eintrag dann auch in der Error List bei Messages steht
...
Stimmt ist mir jetzt auch aufgefallen das da einiges gefilltert wird.
Funktioniert doch anderes als ich dachteKann man bei der Error List auch was konfigurieren ? Ich konnte nämlich nichts dazu finden...
Auch gut das hilft schon mal ... Danke erstmal
Gruß
Martin
-
Jo
rechte Maustaste "Hide"
Weiß nicht wie es genau im Deutschen ist ...
-
Wenn diese Zeilein der Errorlist stehen soll, dann müsste Sie eine spezielle Form haben, wie die C/C++ Fehlermeldungen des Compilers auch aufgebaut sind. Aber evtl. müsste auch die Ausgabe auf stderr erfolgen, was bei pragma message evtl. nicht der Fall ist.