2010-11-27 17 views
7

Estoy utilizando MSVC con un proyecto CMaked. Como resultado, he habilitado muchas de las banderas en MSVC que fueron habilitadas para gcc y clang. Sin embargo, el nivel de advertencia de/Wall me está causando algo de dolor; me advierte sobre todo tipo de cosas en los encabezados incluidos, como stdio.h y encabezados boost. ¿Hay alguna manera de evitar que MSVC me advierta sobre cosas en los encabezados? Me gustan mis niveles de advertencia, pero solo quiero que estén habilitados para mí.MSVC - detener advertencias en los encabezados

+0

Posible duplicado de [¿Qué pasa con los miles de advertencias en los encabezados estándar en MSVC -Wall?] (Http://stackoverflow.com/questions/4001736/whats-up-with-the-thousands-of-warnings- in-standard-headers-in-msvc-wall) – nus

+0

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

Respuesta

7

/Wall es muy pedantic. /W4 es probablemente todo lo que realmente necesita. Para responder a su pregunta, puede desactivar advertencias específicas en torno a sus cabeceras con:

#pragma warning(disable:xxxx) 
#include <yourheader.h> 
#pragma warning(default:xxxx) 

o cambiar el nivel de advertencia con:

#pragma warning(push,3) 
#include <yourheader.h> 
#pragma warning(pop) 

Consulte la documentación de MSDN: http://msdn.microsoft.com/en-us/library/2c8f766e.aspx

+0

Entonces, ¿no hay forma de decirle a MSVC que no advierta en encabezados sobre los cuales no tengo control? (es decir, todos los encabezados incluidos en corchetes angulares, no las comillas dobles) – bfops

+1

No, no lo hay. Además, para algunas plantillas necesitas desactivar las advertencias no solo alrededor de los encabezados, sino también donde los creas (pero tal vez esto solo fue un problema con la versión anterior ... No estoy tan seguro aquí, sry). Tenga especial cuidado al usar encabezados precompilados: también debe desactivar todo lo que está allí. – gimpf

0

Marcos Tolonen ya tiene señalar /W4.

Si eso todavía produce advertencias, p. está utilizando una versión anterior de MSVC como 7.1, o está utilizando una biblioteca de terceros que todavía produce advertencias sobre un código perfectamente bueno, y apunta a compilaciones limpias, luego vea el encabezado msvc silly-warning suppression.

Ha pasado por algunas rondas de revisión de la comunidad, en el grupo de Usenet comp.lang.C++, pero puede/necesitará actualizarse ya que Microsoft agrega aún más advertencias tontas en las nuevas versiones del compilador & hellip; ;-)

+0

Me gusta especialmente la nueva advertencia en VC++ 10 "advertencia: los elementos de la matriz se inicializarán por defecto" como si hubiera algo mal con eso: / –

0

Puede desactivar advertencias específicas mediante el indicador /wdXXXX donde XXXX es el número de advertencias que desea ignorar. No es necesario modificar el código.