Подтвердить что ты не робот

Есть ли способ отключить все предупреждения с помощью прагмы?

Я начал новый проект и решил убедиться, что он строит чистую версию с включенной опцией /Wall. Единственная проблема заключается не в том, что все сторонние библиотеки (например, boost) компилируются без предупреждений, поэтому я прибегал к этому в общем заголовке:

#pragma warning(push)

#pragma warning(disable:4820)
#pragma warning(disable:4619)
#pragma warning(disable:4668)
#pragma warning(disable:4625)
#pragma warning(disable:4626)
#pragma warning(disable:4571)
#pragma warning(disable:4347)
#pragma warning(disable:4640)
#pragma warning(disable:4365)
#pragma warning(disable:4710)
#pragma warning(disable:4820)
#pragma warning(disable:4350)
#pragma warning(disable:4686)
#pragma warning(disable:4711)
#pragma warning(disable:4548)

#include <boost/array.hpp>
#include <boost/assert.hpp>
#include <boost/assign.hpp>
#include <boost/bind.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/filesystem.hpp>
#include <boost/foreach.hpp>
#include <boost/format.hpp>
#include <boost/function.hpp>
#include <boost/integer.hpp>
#include <boost/optional.hpp>
#include <boost/regex.hpp>
#include <boost/smart_ptr.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/utility.hpp>
#include <boost/variant.hpp>

#pragma warning(pop)

Это работает достаточно хорошо, но каждый раз, когда я добавляю новые заголовки boost, я должен добавлять все предупреждения, которые они генерируют в список. Можно ли отключить все предупреждения для этого фрагмента кода?

4b9b3361

Ответ 1

Вы можете нажать/вызвать низкий уровень предупреждения, например:

#pragma warning(push, 0)        

#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
// ...

#pragma warning(pop)

Но знайте, что невозможно отключить все предупреждения. Например, некоторые предупреждения компоновщика невозможно отключить.

Ответ 2

#pragma warning(disable:4820)
#pragma warning(disable:4619)
#pragma warning(disable:4668)

для меньших строк....

#pragma warning (disable : 4820 4619 4668)

Ответ 3

То, что я делал раньше, задает параметр "W3", а не "Wall", а затем в каждом из моих собственных исходных файлов .cpp я помещаю

#pragma warning(push, 4)

вверху ПОСЛЕ всех строк "#include...", а затем

#pragma warning(pop)

в качестве самой последней строки файла.

Таким образом вы получаете предупреждения уровня 4 в своем коде и уровне 3 в стороннем коде, который вы ничего не можете сделать.