2012-01-07 22 views
5

Dopo aver scritto una risposta a this question che visualizza la soluzione in fase di compilazione con un errore, mi chiedevo se fosse possibile ottenere un avviso e completare la compilazione (come è effettivamente specificato nella domanda).Avvisi che verranno costantemente attivati ​​su diversi compilatori?

Mentre la diagnostica in generale dipende dal compilatore, è piuttosto ovvio per alcuni codici che un errore venga attivato (come l'accesso a un membro inesistente o il tentativo di creare un'istanza di un oggetto di tipo incompleto).

Lo stesso non si può dire per gli avvertimenti, poiché questi tendono a differire molto tra i compilatori. Anche se è ragionevole presumere che gli avvertimenti attivati ​​con GCC verranno attivati ​​anche con Clang, lo stesso non può essere detto per Visual C++.

Domanda:
Quali avvisi, se presenti, verranno attivati ​​in modo coerente su tutti e tre i compilatori menzionati?

/W3 del VC++ e -Wall su GCC & Clang può presumere.


Si noti che questo non è solo utile per questa domanda, ma può essere utile per l'attivazione di un avviso per i messaggi definiti dall'utente pure.

+1

Perché si usa '/ W3' su MSVC mentre si utilizza' -Wall' su GCC/Clang? MSVC supporta '/ W4' e'/Wall' come livelli di avviso aggiuntivi. –

+0

@Cody: li considero l'impostazione "predefinita" per i compilatori. Non voglio dover modificare il livello di avviso per visualizzare l'avviso. '/ W3' è l'attuale valore predefinito in Visual Studio e' -Wall' può essere visto anche come predefinito. – Xeo

risposta

2

Questo dovrebbe funzionare su MSVC, GCC, e Clang:

#pragma message("hello world") 

Non molto utile, ma ancora funziona.

Questi raccolto avvertenze anche:

  • inutilizzati
  • etichette inutilizzato
  • grandi valori variabili per esempio (1 < 128)
+0

Impossibile visualizzare qualsiasi modello con quello. :(E questo non conta come un avvertimento, vero? – Xeo

+0

@Xeo Sì, anche se è garantito che funzioni - gli avvisi non così tanto. – Pubby

Problemi correlati