检测MSVC 2017中的警告

Detect warning in MSVC 2017

本文关键字:警告 2017 MSVC 检测      更新时间:2023-10-16

最近,我们发现我们的外部库之一(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(或以上(感兴趣
  • 特级要点:也有解决方案的解决方案

您可以使用:

保存和恢复警告级别
#pragma warning(push) // Save current warning state
#include <offendingheaderfile.h>
#pragma warning(pop)  // Restore saved warning state