Clang C++ 抑制每个文件的 -Wno-deprecated-声明

use*_*530 7 pragma suppress-warnings clang++

在 Xcode 中,在项目级别我有以下设置; Xcode 设置以抑制不推荐使用的函数警告

这会将 -Wno-deprecated-declarations 添加到编译中,我可以从报告导航器中进行验证。此外,当我尝试使用已弃用的函数时,也不会发出警告。

我想在单个文件中抑制此警告,因此我使用了#pragma,如下所示;

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wno-deprecated-declarations"

deprecated_function_call();

#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)

这段代码给出了以下编译错误;错误:未知警告组“-Wno-deprecated-declarations”,已忽略 [-Werror,-Wunknown-pragmas]

pragma clang 诊断忽略了“-Wno-deprecated-declarations”

编译器怎么可能使用这个警告标志而我却不能在我的编译指示中使用这个警告标志。

我的 clang 版本;Apple LLVM 版本 8.0.0 (clang-800.0.36.1)

Joo*_*nga 9

尝试:

#pragma clang diagnostic ignored "-Wdeprecated-declarations"
Run Code Online (Sandbox Code Playgroud)

代替:

#pragma clang diagnostic ignored "-Wno-deprecated-declarations"
Run Code Online (Sandbox Code Playgroud)

我刚刚遇到了与“-Wno-sign-compare”类似的问题,该问题通过使用“-Wsign-compare”(删除了“no-”部分)来解决。

基于这种行为,我希望在您的情况下,“已弃用声明”是警告组的实际名称,并且在用作编译器选项时添加“no-”前缀以指示该组中的警告应该是被忽略。该编译指示已经包含“ignored”关键字,这可能解释了为什么编译指示中不使用相同的语法。