Временно отключить предупреждения компиляции в Visual Studio для включений

Я использую Visual Studio 2017. Я пытаюсь добавить язык сценариев под названием ChaiScript в свой проект, но он генерирует ОЧЕНЬ много предупреждений, когда у меня включена / Wall, и я также воспринимаю предупреждения как ошибки (я предпочитаю это чтобы оставаться таким).

Поэтому я решил временно отключить все предупреждения при включении заголовочного файла ChaiScript (нужно включить только 1 файл). Сначала я сделал это …

#pragma warning( disable : 4061 )
#pragma warning( disable : 4068 )
#pragma warning( disable : 4191 )
#pragma warning( disable : 4355 )
#pragma warning( disable : 4365 )
#pragma warning( disable : 4371 )
#pragma warning( disable : 4464 )
#pragma warning( disable : 4514 )
#pragma warning( disable : 4571 )
#pragma warning( disable : 4623 )
#pragma warning( disable : 4625 )
#pragma warning( disable : 4626 )
#pragma warning( disable : 4668 )
#pragma warning( disable : 4710 )
#pragma warning( disable : 4774 )
#pragma warning( disable : 4820 )
#pragma warning( disable : 5026 )
#pragma warning( disable : 5027 )
#include <chaiscript\chaiscript.hpp>

Это работает, я могу скомпилировать … Однако я тогда хотел, чтобы эти предупреждения были повторно включены для остальной части процесса компиляции …. Так что я превратил это в это …

#pragma warning( push )
#pragma warning( disable : 4061 )
#pragma warning( disable : 4068 )
#pragma warning( disable : 4191 )
#pragma warning( disable : 4355 )
#pragma warning( disable : 4365 )
#pragma warning( disable : 4371 )
#pragma warning( disable : 4464 )
#pragma warning( disable : 4514 )
#pragma warning( disable : 4571 )
#pragma warning( disable : 4623 )
#pragma warning( disable : 4625 )
#pragma warning( disable : 4626 )
#pragma warning( disable : 4668 )
#pragma warning( disable : 4710 )
#pragma warning( disable : 4774 )
#pragma warning( disable : 4820 )
#pragma warning( disable : 5026 )
#pragma warning( disable : 5027 )
#include <chaiscript\chaiscript.hpp>
#pragma warning( pop )

Теперь я подумал, что это сделает так, что он скомпилирует заголовок без предупреждений, а затем вернется к проверке этих предупреждений …. но кажется, что после этого … я все еще получаю 4 предупреждения C4710 … Я что то не так делаю?

https://i.imgur.com/RuxboQC.png

1

Решение

Добавьте предупреждение #pragma (push, 3) перед всеми отключениями и предупреждение #pragma (pop) после включения.

0

Другие решения

В этом конкретном случае проблема, скорее всего, заключается в том, что, хотя предупреждение было отключено при компиляции определения функции, оно было повторно включено, когда компилятор мог включить его. Кажется, нет практического решения для этого.

Microsoft перечисляет предупреждения, которые по умолчанию отключены. Разница между /W4 а также /Wall в том, что /Wall включает предупреждения по умолчанию. Предупреждения о отключении по умолчанию отключены по умолчанию, потому что они имеют низкое значение и / или потому что вы, вероятно, получите много ложных срабатываний. Иногда бывает полезно проверить ваш проект с /Wall чтобы увидеть, есть ли там какая-нибудь полезная информация, но не представляется целесообразным постоянно их включать.

Я большой поклонник повышения уровня предупреждения до практического уровня, но /Wall это слишком далеко для меня. рекомендую /W4 с /WX везде. При необходимости для стороннего кода, выпадающий до /W3 с помощью #pragma warning(push/pop) как вы показали. По моему опыту, все заголовки Microsoft аккуратно компилируются в /W4,

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector