2010-10-18 17 views
6

Generalmente me gusta compilar contra el nivel de advertencia 4 en Visual Studio y tratar todas las advertencias como errores. El problema es que Ogre3D no está compilado con advertencia de nivel 3 (ni FBX SDK ni OIS, que también estoy usando), y eso plantea un problema porque ahora tengo un montón de advertencias de las librerías Ogre3D que ahora se tratan como errores. Hasta ahora he estado compilando en el nivel 3, pero eso me pone muy incómodo. ¿Hay alguna manera de desactivar las advertencias para bibliotecas de terceros específicas sobre las cuales no tengo control?Cambio del nivel de advertencia para Libs de terceros

Respuesta

7

Usted no dice exactamente cómo se compila, pero aquí hay algunas opciones:

1 - dentro de Visual Studio, se puede establecer el nivel de advertencia para los archivos fuente individuales a través de las propiedades de cada archivo de origen

2 - también puede cambiar el nivel de la alerta de forma dinámica dentro de un archivo usando

#pragma warning(push, 3) 
// Some code, perhaps #includes 
#pragma warning(pop) 

que establece el nivel de advertencia en 3 entre los dos pragmas.

+0

El número de punto 1 es exactamente lo que estaba buscando, ¡gracias! – Samaursa

3

Puede ser que si deshabilita las advertencias más conocidas de MSVC, el problema al menos se vuelva manejable.

Mi encabezado de supresión de tontos está disponible en my blog; es suficiente para compilar el código usando <windows.h> en el nivel de advertencia 4 con MSVC, sin advertencias.

Aparte de eso, puede tomar la medida extrema de emplear un "firewall de compilación", lo que significa poner todo el uso directo de la biblioteca de terceros dentro de un archivo de implementación o un conjunto de dichos archivos. Luego puede compilar esos archivos con un nivel de advertencia bajo. Pero no creo que valga la pena. .

Saludos & HTH,

+0

El archivo de cabecera de supresión es muy muy útil, gracias! – Samaursa

+1

Me duele que reclames que muchos de estos son tontos. – bobpaul

+0

@bobpaul: por lo que puedo ver, su área de experiencia es Python, no C++. –

2

Puede envolver los archivos .h de terceros en su propio archivo y deshabilitar localmente las advertencias ofensivas, ya que es posible que no desee desactivar todas las advertencias, pero solo las específicas.

// include_file_wrapper.h 

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wuninitialized" 

#include "file.h" 

#pragma GCC diagnostic pop 

para GCC aquí es cómo se puede hacer esto

http://gcc.gnu.org/onlinedocs/gcc/Pragmas.html

http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas

Cuestiones relacionadas