2012-10-15 14 views
6

Come rimuovere gli avvisi GCC su #pragma region? Ho aggiunto pragma region per esaminare facilmente il codice ma segnala avvisi su #pragma region. Sto usando Visual Studio 2010.Come rimuovere gli avvisi GCC nella regione #pragma?

+4

stai la compilazione con GCC in Visual Studio 2010? – logoff

+0

Lettura possibilmente utile: http://dbp-consulting.com/tutorials/SuppressingGCCWarnings.html – altendky

+0

Il mio suggerimento: Refactor the code. Trasforma la regione in funzioni separate. – user877329

risposta

6

Non utilizzarlo su GCC? :)

La soluzione più semplice mi viene in mente in questo momento è quello di utilizzare i condizionali preprocessore per esso:

#ifndef __GNUC__ 
#pragma region 
#endif 

// Stuff... 

#ifndef __GNUC__ 
#pragma endregion 
#endif 

Non molto bello o leggibile, ma renderà il codice di compilazione senza avvisi su GCC.

+0

Potrebbe facilmente essere macro per la leggibilità – altendky

+1

@altendky Non ne sono sicuro, poiché è utilizzato dall'editor di Visual Studio per indicare le regioni che possono essere piegate. Dipende da quanto è buono il parser dell'editor di Visual Studio. –

+6

@altendky - Come? un singolo '#' (al contrario di '##') all'interno di una * lista di sostituzione * di una macro non identifica una direttiva preprocessore. È invece l'operatore stringify. La cosa che segue l'operatore '# deve essere un nome di parametro macro. –

8

gcc ha questa bandiera di avvertimento:

-Wunknown-pragma avvertono quando si incontra una direttiva #pragma che non è compreso da GCC. Se viene utilizzata questa opzione della riga di comando, gli avvisi verranno emessi anche per i pragmi sconosciuti nei file di intestazione di sistema. Questo è non caso se gli avvisi sono stati abilitati solo dall'opzione della riga di comando -Wall.

E come al solito lo si può negare, il che significa che i pragma sconosciuti non verranno avvertiti. Cioè, utilizzare -Wno-unknown-pragmas.

Si noti che -Wno-unknown-pragmas deve venire dopo qualsiasi flag della riga di comando che attiva questo avviso, ad esempio -Wall - questo disattiva anche gli avvisi su tutti i comandi sconvenienti, quindi utilizzare con attenzione.

+3

Giusto per essere pedante, questa opzione disattiva gli avvisi per tutti i comandi, non è possibile selezionare e scegliere quali direttive devono generare avvertimenti e quali no. –

+0

Sì, @JoachimPileborg, e questa diagnostica ('unknown-pragmas') a volte può salvare la vita, se si incasinano con' omp' pragmas o simili ... –

4
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wunknown-pragmas" 
... Code using Unknown pragmas ... 
#pragma GCC diagnostic pop 
+1

Dato che stai anche costruendo su Windows probabilmente vuoi per avvolgere questo in: #ifdef __GNUC__ – Eric

3

Sembra essere un pragma specifica MSVC, così si dovrebbe usare

#ifdef _MSC_VER 
#pragma region 
#endif 

<code here> 

#ifdef _MSC_VER 
#pragma endregion 
#endif 
Problemi correlati