Visual Studio 2010 (C ++): временно подавить предупреждение C4706

Когда вы компилируете следующий исходный файл C ++ в Visual Studio 2010 с уровнем предупреждения / W4 включен

#include   // for printf
#include  // for strcmp

char str0[] = "Hello";
char str1[] = "World";

int main()
{
    int result;

    if (result = strcmp(str0, str1)) // line 11
    {
        printf("Strings are different\n");
    }
}

, вы получаете следующее предупреждение

предупреждение C4706: присвоение в условном выражении

для строки 11.

Я хочу подавить это предупреждение именно в этом месте. Я попробовал Google и нашел эту страницу: http://msdn.microsoft.com/en-us/library/2c8f766e (v = VS.100) .aspx

Итак, я изменил код на следующий - надеясь, что это решит проблему:

#include   // for printf
#include  // 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");
    }
}

Это не помогло.

Этот вариант также не помог:

#include   // for printf
#include  // 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");
    }
}

Чтобы избежать еще одного запроса: я очищал решение перед каждой компиляцией. Так что, вероятно, это не вина.

Итак, в заключение: как мне подавить C4706 именно в этом месте?

Править Да, перезапись возможна - но я действительно хочу знать, почему я пытаюсь для подавления предупреждения (официально зарегистрированного в MSDN) не работает - в чем ошибка?

12
задан Nubok 8 August 2011 в 17:36
поделиться