Domanda

Di solito mi piace avere molti avvisi abilitati durante la programmazione.Tuttavia, alcune librerie contengono codice che causa facilmente avvisi (.., python, Qt, ..).Durante la compilazione con gcc posso semplicemente usare -isystem invece di -I per silenziarlo.Come posso fare lo stesso con il compilatore MS?Conosco l'avviso #pragma, ma vorrei una soluzione che non implichi codice specifico del compilatore ovunque.So anche che posso disattivare avvisi specifici, ma non è neanche quello che voglio.

A proposito:isystem dovrebbe essere un tag di questa domanda, ma non mi è stato permesso di farlo..

RIEPILOGO:Voglio vedere Tutto avvisi dal mio codice e NO avvisi da codice esterno.

È stato utile?

Soluzione

A partire dal 2017/08/17 questo sembra ancora impossibile.

Ho aggiunto una richiesta di funzionalità qui:

https: // developercommunity.visualstudio.com/content/problem/96411/impossible-to-ignore-warnings-from-system-librarie.html

Aggiornamento 2018:

Il problema è ormai chiuso come fisso ed è disponibile nell'installazione standard MS VS [ fonte ]. Un post sul blog del team MS passa attraverso le nuove funzionalità [ qui ].

La soluzione da MS è flessibile. È possibile non solo differenziare utilizzando percorsi come si fa con --isystem, ma per esempio anche dal fatto che si utilizzi o #include "" #include <>. Il post sul blog è la pena di leggere per vedere tutti i vari punti di personalizzazione.

Infine avvertenze sono utilizzabili per me anche sulla piattaforma MS VS.

Altri suggerimenti

Questo esiste ora sotto /experimental:external /external:I system_include_path /external:W0. Vedere https://blogs.msdn.microsoft. com / vcblog / 2017/12/13 / broken-avvertimenti-teoria / per molti altri dettagli.

No, MSVC non ha un file -isystem equivalente.


guarda l'output di cl /?:

/wd disabilita avviso n

/ trattiamo l'avviso n come un errore

/wo emette un avviso n una volta

/w imposta il livello di avviso 1-4 per n

Tieni presente che questo disabilita gli avvisi per l'intero progetto;Ricordo che quando uso Qt preferisco cambiare la sua intestazione principale disabilitando e abilitando di nuovo l'avviso #pragma alla fine in modo da poter comunque vedere tutti gli avvisi per la mia fonte.

Modificare l'autore ha modificato la sua domanda, risposta aggiornata:non c'è modo di ottenere il codice con avvisi e il codice Qt senza avvisi utilizzando i flag del compilatore:come dirai al compilatore qual è il "tuo" codice?

Tieni presente che i flag sopra possono essere applicati anche a livello di file, quindi ciò ti consentirebbe di disabilitare gli avvisi solo per quei file in cui includi intestazioni Qt, ma quello Ancora significa che non puoi vederli per il tuo codice in quei file.

Quindi rimango con la risposta sopra;non è proprio carino, ma sono abbastanza sicuro che sia l'unico modo:usa #pragma all'inizio e alla fine delle intestazioni Qt.O cambia le intestazioni Qt (ancora più brutte), oppure scegli un modo meno invasivo come questo:

//your source/header file
#include "shutuppqt.h"
#include <QString>
#include "enableallwarnings.h"

esempio "shutuppqt.h"

#ifdef MSVC
  #pragma warning ( disable : 4222 ) //or whatever warning Qt emits
#else
  //....
#endif

esempio "enableallwarnings.h"

#ifdef MSVC
  #pragma warning ( enable : 4222 ) //or default instead of enable
#else
  //....
#endif
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top