Я получаю предупреждения после того, как в окне MSVC-Output сказано «Генерация кода ...».
1>Note: including file: D:\FOO\INC\ippcc.h
1>Generating Code...
1>d:\FOO\inc\ipinctrlimpl.h(130): warning C4701: potentially uninitialized local variable 'hResult' used
1>d:\FOO\inc\iwatchdogimpl.h(158): warning C4702: unreachable code
1> Creating library ..\..\LIB/FOO.lib and object ..\..\LIB/FOO.exp
1>FOO.vcxproj -> D:\FOO\FOO.dll
1>Done building project "FOO.vcxproj".
Как можно подавить эти предупреждения, не отключая их для всего решения?Я сам не могу прикоснуться к коду, поэтому исправить их нет возможности.
Согласно этой записи , компилятор генерирует машинный код в этот момент.Как вообще возможно, что эти предупреждения генерируются тогда?В конце концов, базовая компиляция уже выполнена.
ОБНОВЛЕНИЕ:
Установка глобального уровня предупреждений на / W3 в настройках проекта, а не на / W4, предотвращает эти предупреждения (потому что они являются предупреждениями уровня 4).
Вместо глобальных настроек / W3 я также могу явно отключить локальные предупреждения для критических включений:
#pragma warning(push)
#pragma warning(disable : 4701 4702)
#include "CriticalInclude.h"
#pragma warning(pop)
Но тут возникает странная вещь: локальная настройка / W3 (иличетный / W1) через
#pragma warning(push, 3)
#include "CriticalInclude.h"
#pragma warning(pop)
не предотвращает эти предупреждения.Почему?
Кажется, что нажатие на warning disable
трактуется иначе, чем нажатие на новый уровень предупреждения.