最近,我们发现我们的一个外部库(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");
但是,由于搜索引擎总是告诉我们如何启用警告,因此无法通过搜索来找到警告级别的方法。 是否存在检索警告级别的方法?
答案的一些限制:
答案 0 :(得分:3)
您可以使用以下方法保存和恢复警告级别:
#pragma warning(push) // Save current warning state
#include <offendingheaderfile.h>
#pragma warning(pop) // Restore saved warning state