2011-11-13 9 views
9

Uno de mis archivos .cpp está generando una advertencia C4275 debido a un encabezado de un tercero I #include ... (la advertencia se desencadena debido a una clase DLL-export heredando de un no- Clase de exportación de DLL por lo que puedo decir).advertencia de #pragma no está suprimiendo una advertencia

he añadido la línea:

#pragma warning(disable : 4275) 

Como la primera línea de mi archivo .cpp y aún así se genera la advertencia. Esto está en VC++ 2008, y no se usa PCH.

¿Por qué mi #pragma no funciona y (además de cambiar el código de terceros) cómo puedo solucionar esto?

+0

¿Alguna posibilidad de usar openmp? (Único lugar que he visto/usado #pragma) – pyCthon

Respuesta

5

Genere un archivo preprocesado y probablemente encontrará que algunos otros archivos de encabezado están volviendo a habilitar la advertencia.

+1

Para ahorrar un poco de frustración: en Visual Studio 2005 y 2012, al usar el indicador/P se ignora el pragma de advertencia, p. '/ P/D" NOMINMAX "' y '#pragma warning (disable: 4005) #define NOMINMAX' provoca una advertencia C4005. –

1

No he visto esta advertencia en particular, pero en Visual Studio, puede desactivar advertencias específicas a través de las propiedades del proyecto (es decir, no pragma). Desactivarlos de esa manera parece ser "más fuerte" que inhabilitarlos a través de un pragma. Puede hacer eso solo por el único archivo que está usando.

Por supuesto, las advertencias con frecuencia le dicen algo útil, por lo que este sería realmente el último recurso.

+1

Eso tampoco funciona. En mi caso, me pareció que hacer malabares con el '# includes' hizo que la advertencia desapareciera, esta vez, pero aún me pregunto en qué circunstancias' 'pragma' no funciona. –

Cuestiones relacionadas