如何使用 #pragma clang diagnostics

29

我知道 #pragma clang diagnostics 可以用于忽略clang生成的某些警告。但是我不知道如何正确使用它。

例如,对于未使用的变量警告,我们可以通过以下方式避免警告:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"

int number;

#pragma clang diagnostic pop

但我不知道如何获取#pragma clang diagnostic ignored ("-Wunused-variable" here)中的正确参数

是否有办法在Xcode中找到特定警告的名称?


这个问题可能会帮助您找到使用诊断工具的正确语法。https://dev59.com/NmYq5IYBdhLWcg3wfgrd#14444603 - Popeye
3个回答

34

在问题导航器上右键单击问题,然后选择“在日志中显示”。错误消息将指定警告内容。


1
我再也看不到那个选项了,只有在符号或者Finder中显示。这在Xcode 5上怎么工作? - user1028028
1
好的,对于看到选项变灰的你们(@user1028028和@Stas),你们需要先进行构建。然后等构建完成后再执行同样的操作。选项将不会是灰色的。如果在此之后尝试引入新的错误/警告,上下文菜单选项仅在新的警告/错误上变为灰色。基本上,你需要通过先构建来生成日志。希望这仍能有所帮助!干杯 - iOS Gamer

20

谢谢,我已经更新到官方文档中,现在也有这些信息了。 - AndiDog

1
好的,我理解的是: Clang 是编译器的 C/Objective C 前端层,负责显示在 Xcode 中看到的警告和错误信息。
因此,当您在 Xcode 中启用将警告视为错误选项时,在某些情况下,您需要一个工具来处理 Clang,以允许一些警告。
这时,Clang 诊断 扮演了这个角色。
机制类似于图形矩阵,以堆栈方式进行推送和弹出。
因此,当您有以下内容时: #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wcovered-switch-default" // 代码 #pragma clang diagnostic pop 您可以防止 Clang 在该区域显示警告消息,所以这就像安全区域一样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接