2010-07-08 12 views
6

Mi piace compilare il mio codice con -Wall e talvolta persino -pedantic. In parte è una cosa di stile, e in parte il fatto che a volte emette degli avvisi molto, molto utili (come usare = piuttosto che ==).C'è un modo per far sì che g ++ emetta solo avvisi relativi ai miei file?

Tuttavia, gli autori di alcune delle mie intestazioni chiaramente non sono tali sticklers. Compilare con uno dei due livelli di avviso produce un enorme disordine di output, vanificando completamente lo scopo di compilare in quel modo in primo luogo.

Quindi, come posso fare in modo che il compilatore ignori questi avvisi?

+7

Si battere quei deficienti sopra la testa con una mazza fino a quando non risolvere tutti i avvertenze nelle intestazioni, quindi usa sempre '-Wall -Wextra -pedantic'. –

+0

@NikolaiNFetissov È necessario usare anche '-Werror', in questo modo non possono essere compilati se c'è un avviso. Ciò significa che non dovrebbero condividere il codice con un solo avvertimento ... –

risposta

8

alternativa a JS Bangs' answer, si può avere GCC trattarli come system headers, che disabilita tutte le avvertenze (ad eccezione #warning direttive) per tali intestazioni.

Se l'interruttore -isystem è inutile, si può avvolgere tutte le intestazioni offendere con le intestazioni più semplici che contengono solo la riga appropriata:

#pragma GCC system_header 
1

Utilizzare un adeguato #pragma per disabilitare gli avvisi prima di includere le intestazioni cattivi, quindi riattivare gli avvertimenti in seguito. Docs on the GCC pragmas.

0

Sembra come se fossero "i tuoi" headers, significa che è possibile modificare da soli o lasciare che gli "scrittori" di farlo per voi. Se vuoi perseguire una vita libera da avvertimento, aggiusta quelle intestazioni :).

In alternativa si può ovviamente l'uso di pragma, ma sono anti-stile e brutto :)

7

Quando si richiama GCC, utilizzando -isystem invece di -I per dare i percorsi intestazioni problematici dovrebbe mettere a tacere le avvertenze per tali intestazioni. Vedere lo GCC docs o this SO question.

+0

Grazie! Questo ha risolto il mio problema. – Salgat

Problemi correlati