Visual Studio 2010 (C ++): suprima la advertencia C4706 temporalmente

Cuando compila el siguiente archivo fuente C ++ en Visual Studio 2010 con nivel de advertencia / W4 habilitado

#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");
    }
}

obtienes la siguiente advertencia

warning C4706: asignación dentro de la expresión condicional

para la línea 11.

Quiero suprimir esta advertencia exactamente en este lugar. Así que probé 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 lo siguiente, esperando que esto resuelva 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 ayudó.

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 otra consulta: limpié la solución antes de cada compilación. Entonces esto probablemente no sea la culpa.

Entonces, en conclusión: ¿cómo suprimo el C4706 exactamente en este lugar?

Edita Sí, es posible reescribir, 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?

Respuestas a la pregunta(5)

Su respuesta a la pregunta