2011-12-14 9 views
8

Sto tentando di compilare l'introduzione del flag -Werror in una base di codice esistente. Uno dei problemi che sto riscontrando è che in alcuni punti viene utilizzato lo #warning per visualizzare messaggi informativi. Questi non dovrebbero essere trattati come un errore.Come evitare che i messaggi `# warning` vengano trattati come un errore?

Una soluzione sarebbe quella di utilizzare #pragma message invece, ma questo non sembra essere supportato dalle versioni precedenti di gcc. (I nostri server di build utilizzano gcc 4.1.2).

Qualcuno può aiutarmi a risolvere questo problema?

+5

Bene, si sta abusando di '# warning'. Sbarazzati di questo, problema risolto. –

+4

@CatPlusPlus: che dire di pubblicare un'alternativa? – UncleBens

+1

@UncleBens: avrei bisogno di vedere cosa sta facendo lì per suggerire alternative diverse da "rimuoverlo". È possibile che possa essere sostituito da qualcosa a livello di sistema di build. –

risposta

4

In gcc-4.6 e versioni successive, è possibile utilizzare -Wno-error=cpp. Almeno il clang rilasciato con Lion e in seguito, è possibile utilizzare -Wno-error=#warnings. Ma dal momento che i tuoi server di compilazione utilizzano un gcc antico, probabilmente sei sfortunato.

In generale, passare -fdiagnostics-show-opzione per avere avvertimenti Visualizza Valori come:

test.cc:1:2: warning: #warning hello [-Wcpp] 

che ti dice da bandierina di segnalazione che controlla l'avviso. In gcc> = 4.6 e clang, questo è il default, quindi sapere di passarlo potrebbe non essere più utile.

1

effetto sul Posto disabilitazione di -Werror per #warning come segue:

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-Wcpp" 
#warning Informative message: everything is nice and good!!! 
#pragma GCC diagnostic pop 

Il vantaggio di questo approccio è che si può ancora indurre errore #warning in altre parti del codice.

+2

Quanto sopra non sembra funzionare con gcc 4.1.2 - Ottengo "avviso: ignorando #pragma GCC diagnostic" e la riga #warning viene rilevata come un errore (come definito -Werror) –

Problemi correlati