2013-03-02 11 views
6

ho impostato il livello di allarme per EnableAllWarnings (/ parete) in Visual Studio 2012 e in questo semplice programma:Come sopprimere avvertimenti interni file di Visual Studio

#include "math.h" 

int main() { 
    return 0; 
} 

Quando compilo, ho ricevuto diversi avvertimenti come:

1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\math.h(161): warning C4514: 'hypot' : unreferenced inline function has been removed

Se sostituisco la guerra "math.h" a "string.h" I continuare a ricevere informazioni sullo string.h e così via.

Qualcuno sa come rimuovere questi avvisi?

+0

Come hai inserito la stessa directory 'math.h'? Il tuo codice è nella directory di Visual Studio Include? –

+0

voto per https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/14717934-add-a-cl-exe-option-for-system-headers-like-gcc-s – Trass3r

risposta

7

Forse questo farà il trucco:

// you can replace 3 with even lower warning level if needed 
#pragma warning(push, 3) 

#include <Windows.h> 
#include <crtdbg.h> 
#include "math.h" 
//include all the headers who's warnings you do not want to see here 

#pragma warning(pop) 

Se si prevede di porta il codice per un ambiente non MS allora si potrebbe desiderare di avvolgere tutte le intestazioni esterne utilizzate in un'intestazione specifica in modo che possa essere cambiato durante il porting.

+0

Questo non risolve il problema dell'OP. –

+0

Cosa o chi è "OP"? – blessio

+0

[L'onnipotente Google ha una risposta] (http://www.urbandictionary.com/define.php?term=op) –

6

Guardate attentamente i messaggi di avviso si sta effettivamente ricevendo:

1> warning C4514: 'hypot' : unreferenced inline function has been removed 

Se stai dicendo a te stesso "così ?!", questo è esattamente il mio punto.

Warning C4514 è notoriamente inutile uno ed è letteralmente solo piangendo di essere soppresso a livello globale. È un oggetto completamente non utilizzabile e descrive un caso previsto quando si lavora con una libreria.

Warning C4711 -una funzione è stata selezionata per l'espansione in linea-è un altro avviso rumoroso che vedrai. Ovviamente, questo verrà visualizzato solo durante la compilazione con le ottimizzazioni attivate, il che probabilmente è il motivo per cui non l'hai ancora visto.

Come dice la documentazione collegata, questi sono "avvisi informativi" e sono disabilitati per impostazione predefinita. Che è fantastico, tranne che io, come te, preferisco compilare il mio codice con "All Warnings" (/Wall) abilitato, e questi aggiungono solo rumore. Quindi li spengo singolarmente.

È possibile disattivare questi avvisi o aggiungendo le soppressioni alle proprietà del vostro progetto in VS IDE, oppure è possibile utilizzare le direttive pragma nella parte superiore del vostro file di codice (ad esempio, nella vostra intestazione precompilata):

#pragma warning(disable: 4514 4711) 
Problemi correlati