При работе cl.exe
вы можете указать уровень предупреждения.
cl /W3
cl /W4 # warn even more
cl /Wall # all warnings on
Однако самый высокий уровень, /Wall
, кажется непрактичным, поскольку он вызывает предупреждения в заголовочных файлах Windows, например, в windef.h
(Windows SDK для VS2010). Двумя наиболее часто встречающимися из них являются C4668 и C4820 . Таким образом, вы можете отключить их:
cl /Wall /wd4668 /wd4820
Все еще оставляет вас с C4255 :
C:\SDKs\Windows\v7.0A\include\windef.h(230) : warning C4255: 'FARPROC'
C:\SDKs\Windows\v7.0A\include\windef.h(231) : warning C4255: 'NEARPROC'
C:\SDKs\Windows\v7.0A\include\windef.h(232) : warning C4255: 'PROC'
Итак, вы добавите это:
cl /Wall /wd4668 /wd4820 /wd4255
Но другие могут появиться. И я, возможно, захочу сохранить эти предупреждения для своего собственного кода, но чтобы выходные данные не были загромождены предупреждениями, исходящими из моего кода.
Есть ли способ заставить компилятор применять другие настройки к стандартным заголовкам, чем к моему собственному коду?
Обновление
Хм, есть подобный вопрос , и ответ должен идти с /W4
вместо /Wall
. Возможно, в MSVC невозможно указать разные настройки для разных файлов.