#c #visual-studio-2019 #compiler-warnings #code-analysis
#c #visual-studio-2019 #компилятор-предупреждения #анализ кода
Вопрос:
Недавно я переместил большую кодовую базу с VS2013 на VS2019, которая создается для 32-разрядных и 64-разрядных целей Windows.
Отладочные и выпускные версии компилируются с многочисленными предупреждениями, хотя они в основном такие же, как в сборке VS2013. Большинство из них являются тривиальными проблемами, которые, как я знаю, безопасны. Я компилирую с помощью опции компилятора «W3».
Однако, когда я пытаюсь скомпилировать «анализируемую» версию сборки (я включаю опцию компилятора «/ analyze») Я получаю многие из следующих:
ошибка C2220: следующее предупреждение рассматривается как ошибка
Этого следовало ожидать, и некоторые из этих ошибок требуют внимания. Но первое, что кажется странным, это то, что МНОГИЕ из этих «ошибок» были из библиотек Windows SDK — код, который я не совсем готов редактировать.
Затем я прочитал следующее: https://learn.microsoft.com/en-us/cpp/build/reference/analyze-code-analysis?view=vs-2019 Поэтому я изменил «/ analyze» на «analyze:WX-«, просто ради эксперимента. Это заставило замолчать МНОГИЕ ошибки, но я все равно получаю несколько сообщений «Ошибка C2220: следующее предупреждение рассматривается как ошибка», в основном в сторонних библиотеках. Я рад исправить (или игнорировать, где это уместно) проблемы, которые возникли в моем собственном коде.
Итак, мой вопрос в том, как мне подавить эту ошибку, когда она появляется в таких вещах, как Windows SDK и очень хорошо используемые сторонние библиотеки? Тот факт, что это не более чем проблема, заставляет меня подозревать, что я что-то пропустил здесь. Но в настоящее время я не могу выполнить анализ кода, что на самом деле не было проблемой в VS2013.
Комментарии:
1. По какой-то причине включен /WX , который превращает предупреждения в ошибки C2220. Продолжайте, отключив его.
2. После переноса кода с VS2013 на VS2015 эта
Treat Linker Warning As Errors
опция будет включена в некоторыхProject
параметрах компиляции. Вы могли бы установитьNo
,Properties->C/C ->General->Treat Linker Warning As Errors
чтобы избежать их.