2013-04-14 4 views
7

Ich habe gelernt, dass ichGCC, C: Name des Standard Warnungen Herauszufinden für den Einsatz in Pragma ignorieren

#pragma GCC diagnostic ignored "<warning>" 

an die Spitze einer Quelldatei, um Warnungen zu diesem speziellen Zusammenhang zu unterdrücken setzen können Quelldatei. Es scheint jedoch, dass einige Namen nicht spezifisch genug sind. Zum Beispiel

#pragma GCC diagnostic ignored "-Wwrite-strings" 

gcc (4.7.2) nicht von der Anzeige Warnmeldungen, deren genauen Namen verhindern sind nicht gegeben, stattdessen werden diese Meldungen gefolgt nur von [standardmäßig aktiviert]. Ich denke, ich muss die richtigen Warnnamen kennen, damit ich sie in der #pragma Zeile verwenden kann. Ich habe versucht

-fdiagnostics-show-option, 

aber die Warnungen werden immer noch als [standardmäßig aktiviert] angezeigt.

Gibt es eine Möglichkeit, diese Warnungen zu identifizieren oder Warnungen in Bezug auf eine bestimmte Quelldatei zu unterdrücken?

Vielen Dank!

+0

Ich glaube, dass die richtige Option zu verwenden ist '-Wno-write-strings' – Bechir

+0

Wenn ich mich nicht irre, ist dies eine Compiler-Option, die global alle entsprechenden Warnungen deaktiviert. Ich möchte nur Warnungen deaktivieren, die von bestimmten Quelldateien verursacht werden. Deshalb habe ich den '# Pragma'-Ansatz ausprobiert. Aber danke trotzdem! – Guybrush

Antwort

2

Sie müssen die Diagnosezustände drücken und aufheben. Wie folgt aus:

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wunused-function" 
    /* ignoring warning */ 

    int unused_function(void) { 
     return 1337; 
    } 
#pragma GCC diagnostic pop 
+0

Also habe ich alle Funktionen meiner Quelldatei zwischen die von Ihnen gezeigten Pragmas gesetzt, mit '-Write-Strings'. Dennoch unterdrückt es nicht die Warnungen aus dieser Datei, die mit 'standardmäßig aktiviert 'gekennzeichnet sind. – Guybrush

+0

Können Sie weitere Informationen darüber geben, wie Ihre gcc-Befehlszeile aussieht (z. B. -Wall, -pedantisch usw.)? Was sind die genauen Warnungen, die Sie bekommen? –

+0

habe ich '-pedantic -Wall -Wshadow -Wointer-arith -Write-Strings' verwendet. Wenn ich nichts mache, bekomme ich Warnungen mit '-WShadow',' -Wunused-Variable', '-Wimplicit-function-declaration' und' standardmäßig aktiviert'. Wenn ich '#pragma GCC diagnostic igonred" "' an die Spitze der relevanten Quelldateien setze, kann ich die ersten drei Warning-Typen loswerden, aber ich weiß nicht, wie ich mit 'standardmäßig aktiviert' umgehen soll Warnungen aus diesen Quelldateien. – Guybrush

Verwandte Themen