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?
risposta
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.
Potrebbe facilmente essere macro per la leggibilità – altendky
@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. –
@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. –
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.
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. –
Sì, @JoachimPileborg, e questa diagnostica ('unknown-pragmas') a volte può salvare la vita, se si incasinano con' omp' pragmas o simili ... –
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunknown-pragmas"
... Code using Unknown pragmas ...
#pragma GCC diagnostic pop
Dato che stai anche costruendo su Windows probabilmente vuoi per avvolgere questo in: #ifdef __GNUC__ – Eric
Sembra essere un pragma specifica MSVC, così si dovrebbe usare
#ifdef _MSC_VER
#pragma region
#endif
<code here>
#ifdef _MSC_VER
#pragma endregion
#endif
- 1. GCC non onora 'pragma GCC diagnostic' per tacitare gli avvisi
- 2. Utilizzo di typecasting per rimuovere gli avvisi del compilatore gcc
- 3. Disabilita tutti gli avvisi gcc
- 4. Come disabilitare tutti gli avvisi usando le direttive pragma in GCC
- 5. GCC messaggio #pragma ignorato
- 6. Disabilita condizionalmente gli avvisi con qmake/gcc?
- 7. Sopprimere -Wunknown-pragma di avviso in GCC
- 8. disabilita avvisi specifici in gcc
- 9. Come disabilitare selettivamente -Werror usando #pragma con gcc
- 10. Codice pieghevole (regione #pragma) in Qt Creator
- 11. Come sopprimere gli avvisi GCC dalle intestazioni delle librerie?
- 12. Devo usare "#pragma GCC ..." o "#pragma clang ..." in Xcode
- 13. Disabilita selettivamente gli avvisi GCC solo per una parte di un'unità di traduzione?
- 14. Come si sovrappongono gli avvisi?
- 15. GCC, C: Scoprire nome di avvertimenti di default per l'uso in #pragma ignorare
- 16. Come disabilitare gli avvisi python
- 17. Disattivare gli avvisi del compilatore per riga
- 18. SCons: salva/reindirizza output testuale gcc (avvisi)
- 19. C'è un modo per disattivare tutti gli avvisi con un pragma?
- 20. Come rimuovere i seguenti avvisi di "dichiarazione implicita di funzione"?
- 21. Come sopprimere gli avvisi nei file di origine di terze parti?
- 22. Come utilizzare gli align per sostituire pragma pack?
- 23. Come posso eliminare gli avvisi obsoleti in funzioni deprecate in GCC?
- 24. Rimuovere gli spazi bianchi nella stringa XML
- 25. Come disattivare gli avvisi di indentazione JSLint?
- 26. gcc: come gestire al meglio gli avvisi relativi alla fine della funzione (irraggiungibile) dopo l'interruttore?
- 27. Come sopprimere gli avvisi nelle intestazioni esterne in Visual C++
- 28. Come posso eliminare gli avvisi di deprecazione di g ++ nella compilazione OCaml quando si collega alle librerie C++?
- 29. Come far sì che gcc avvisi le funzioni sconosciute?
- 30. Avvisi/avvisi di nullpointer in studio Android nella vista codice
stai la compilazione con GCC in Visual Studio 2010? – logoff
Lettura possibilmente utile: http://dbp-consulting.com/tutorials/SuppressingGCCWarnings.html – altendky
Il mio suggerimento: Refactor the code. Trasforma la regione in funzioni separate. – user877329