Al compilar el siguiente fichero fuente en C++ en Visual Studio 2010 con el nivel de advertencia/W4 habilitadoVisual Studio 2010 (C++): suprimir C4706 advertencia temporalmente
#include <cstdio> // for printf
#include <cstring> // for strcmp
char str0[] = "Hello";
char str1[] = "World";
int main()
{
int result;
if (result = strcmp(str0, str1)) // line 11
{
printf("Strings are different\n");
}
}
se obtiene la siguiente advertencia
advertencia C4706: asignación dentro de la expresión condicional
para la línea 11.
Quiero suprimir esta advertencia exactamente en este lugar. Así que traté de Google y encontré esta página: http://msdn.microsoft.com/en-us/library/2c8f766e(v=VS.100).aspx
así que cambió el código a la siguiente - esperando que esto resolvería el problema:
#include <cstdio> // for printf
#include <cstring> // for strcmp
char str0[] = "Hello";
char str1[] = "World";
int main()
{
int result;
#pragma warning(push)
#pragma warning(disable : 4706)
if (result = strcmp(str0, str1))
#pragma warning(pop)
{
printf("Strings are different\n");
}
}
No sirvió de nada.
Esta variante tampoco ayudó:
#include <cstdio> // for printf
#include <cstring> // for strcmp
char str0[] = "Hello";
char str1[] = "World";
int main()
{
int result;
#pragma warning(push)
#pragma warning(disable : 4706)
if (result = strcmp(str0, str1))
{
#pragma warning(pop)
printf("Strings are different\n");
}
}
Para evitar una investigación adicional: Limpié la solución antes de cada compilación. Entonces probablemente esto no sea culpa.
Por lo tanto, en conclusión: ¿cómo puedo suprimir el C4706 exactamente en este lugar?
Editar Sí, la reescritura es posible, pero realmente quiero saber por qué la forma en que trato de suprimir la advertencia (que está documentada oficialmente en MSDN) no funciona, ¿dónde está el error?
mayoría de los compiladores implementar el "¿está seguro" factor por el que requiere un par adicional de soportes, deseo MSVC podría hacer lo mismo. – Thomas