如何抑制函数参数的弃用警告?
How do I suppress deprecation warnings for function parameters?
我以前使用过这样的 pragma,我记得它在 GCC (ubuntu) 和 clang (macos) 上都有效。它们似乎可以有效地抑制来自 header #include
s.
的警告
// test.cpp
struct [[deprecated]] Foo {};
#pragma clang push
#pragma clang ignored "-Wdeprecated-declarations"
int main() {
auto foo_fun = [](const Foo &f) {};
foo_fun(Foo());
}
#pragma clang pop
但是,当使用 clang -std=c++14 -o wat test.cpp
编译时,当弃用类型作为 lambda 或普通函数参数出现时,它似乎不起作用。编译器版本为Apple clang version 12.0.0 (clang-1200.0.32.29)
在这些情况下,我该怎么做才能抑制弃用警告?
您的 pragma 声明中缺少 diagnostic
关键字:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
...
#pragma clang diagnostic pop
我以前使用过这样的 pragma,我记得它在 GCC (ubuntu) 和 clang (macos) 上都有效。它们似乎可以有效地抑制来自 header #include
s.
// test.cpp
struct [[deprecated]] Foo {};
#pragma clang push
#pragma clang ignored "-Wdeprecated-declarations"
int main() {
auto foo_fun = [](const Foo &f) {};
foo_fun(Foo());
}
#pragma clang pop
但是,当使用 clang -std=c++14 -o wat test.cpp
编译时,当弃用类型作为 lambda 或普通函数参数出现时,它似乎不起作用。编译器版本为Apple clang version 12.0.0 (clang-1200.0.32.29)
在这些情况下,我该怎么做才能抑制弃用警告?
您的 pragma 声明中缺少 diagnostic
关键字:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
...
#pragma clang diagnostic pop