2013-06-01 18 views
8

Quando si utilizza la direttiva #warning, anziché un avviso, ne ottengo due: quello che viene generato, più uno .Come disabilitare l'avviso GCC sulla direttiva #warning come estensione GCC?

Posso sopprimere il risultato della direttiva #warning, con -Wno-cpp, ma questo è l'opposto di quello che voglio.

Posso aggirare il problema utilizzando invece #pragma message() ma sembra che la direttiva #warning sia piuttosto inutile: non c'è modo di sopprimere questo avviso?

+1

Quali sono le opzioni che si passano a GCC? –

+0

Era '-g -static -static-libgcc -Wall -Wextra -pedantic -Wno-vla -Wsizeof-pointer-memaccess -Wissing-declarations -march = native -fexceptions -fottensive-optimization -flto -O3 -std = C++ 1y -fsanitize = address' in questo caso - vedi la mia risposta qui sotto, ho capito che era l'opzione -pedantic che era responsabile. – Riot

risposta

3

Ah, sembra che l'opzione -pedantic abiliti questo avviso, e non sembra esserci un override specifico per questo, come nella maggior parte degli altri avvisi GCC. La rimozione di -pedantic elimina l'avviso relativo a un avviso.

0
#ifdef __GNUC__ 
#warning "no warning here!" 
#endif 

compilerà con o senza gcc, anche con -pedantic, ma sarà ancora dare l'avvertimento, (e non riuscire se gli avvertimenti sono escalation di errori).

UPDATE: Secondo this related question, non esiste una soluzione pulita per disabilitare selettivamente le avvertenze sulla #pragma specifico gnu s

+0

Certamente verrà compilato, in ogni caso, ma questo non fa nulla per eliminare l'avviso: 'warning: #warning è un'estensione GCC [abilitata di default]' – Riot

+0

Sì, l'ho appena capito. Alla ricerca disperata di un pragma per spegnere quella dannata cosa. (aggiungendo che '#pragma GCC diagnostic ignored" -Wunknown-pragmas "' non sembra funzionare.) – wildplasser

0

In realtà, il seguente dovrebbe funzionare. Con questo puoi sopprimere/ignorare gli avvisi di gcc.

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wcpp" 

... 

#pragma GCC diagnostic pop 
+2

Anche se questa è una buona idea, temo che non funzioni con gli avvertimenti -pedantic. Vedere il codice di test qui: http://coliru.stacked-crooked.com/view?id=53358c525169b7c2750ed1eb09dff702-0f11904895a20602a6e5ca9f4b5b0039 – Riot