Чтобы отключить предупреждения от системных заголовков, над которыми у вас нет контроля, просто используйте эту конструкцию:
#pragma warning(push, 0)
//Some includes with unfixable warnings
#pragma warning(pop)
или более избирательно для конкретных предупреждений:
#pragma warning( push )
#pragma warning( disable : 4081)
#pragma warning( disable : 4706 )
// system header includes
#pragma warning( pop )
Этот ответ был украден из другого потока переполнения стека: (/1785143/kak-podavit-preduprezhdeniya-vo-vneshnih-zagolovkah-v-visual-c).
Я полностью согласен с комментариями "edA-qa mort-ora-y". Я хочу видеть все предупреждения в моем коде, включая такие важные вещи, как C4265 (DTOR не виртуальный). Хотя C4265 находится на уровне предупреждения 3, Microsoft по своему разумению отключила его по умолчанию, и вам нужен / Wall, чтобы получить его. Смотрите эту страницу для получения дополнительной информации о том, какие предупреждения скрыты:
http://msdn.microsoft.com/en-GB/library/23k5d385(v=vs.80).aspx
Чтобы увидеть это и подавить шум от внешних заголовков, эта страница дает отличный совет, и я думаю, что полностью отвечает на оригинальный вопрос, который начал эту тему:
http://blogs.msdn.com/b/vcblog/archive/2010/12/14/off-by-default-compiler-warnings-in-visual-c.aspx
По сути, он советует создать «глобальный» включаемый файл с соответствующими #pragmas для подавления предупреждений, которые вас не интересуют (возможно, C4820 с дополнительным), для защиты от внешних заголовков описанным выше способом, затем компилировать с / Wall. Это часть работы, но она того стоит. При GCC это просто вопрос использования -isystem. Разработка Microsoft: обратите внимание! VS - умный продукт, но иногда он просто тупой из-за простых вещей.