Недавно мы обнаружили, что одна из наших внешних библиотек (DLib) подавляет предупреждения на глобальном уровне. Написание следующего кода дает нам предупреждение:
[[deprecated]] int findDeprecated() { return 42; }
int test = findDeprecated();
Включение заголовка dlib подавляет предупреждение:
#include <dlib/matrix.h>
[[deprecated]] int findDeprecated() { return 42; }
int test = findDeprecated();
Необходимость вызвать все эти предупреждения для проверки наших внешних библиотек очень громоздка и не так проста для интеграции в нашу кодовую базу.
Следовательно, мы хотели бы создать новый тест, который концептуально выглядит следующим образом:
#include <dlib>
#include <boost>
static_assert(getWarningLevel(4996) == 4, "Deprecated Warning Was suppressed");
Однако из поиска мы не можем найти способ запросить уровень предупреждения, так как поисковые системы всегда говорят нам, как включить предупреждение.
Существует ли способ получить уровень предупреждения?
Некоторые ограничения к ответу:
- Нас интересует только Visual Studio 2017 (или выше)
- Дополнительные очки: также есть решение для clang-cl