Когда вы компилируете следующий исходный файл C ++ в Visual Studio 2010 с включенным уровнем предупреждения / W4
#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");
}
}
, вы получите следующее предупреждение
предупреждение C4706: назначение в условном выражениивыражение
для строки 11.
Я хочу подавить это предупреждение именно в этом месте.Поэтому я попробовал Google и нашел эту страницу: http://msdn.microsoft.com/en-us/library/2c8f766e(v=VS.100).aspx
Поэтому я изменил код на следующий - надеясь, что это решит проблему:
#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");
}
}
Это не помогло.
Этот вариант тоже не помог:
#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");
}
}
Чтобы избежать еще одного запроса: я чистил решение перед каждой компиляцией.Так что это, вероятно, не ошибка.
Итак, в заключение: как мне подавить C4706 именно в этом месте?
Редактировать Да, переписать можно - но яочень хочу знать, почему способ, которым я пытаюсь подавить предупреждение (которое официально зарегистрировано в MSDN), не работает - в чем ошибка?