如何在Xcode项目中抑制头文件警告

9

当我在Xcode 7 beta 4中构建UnzipKit时,在MiniZip的ioapi.h文件中会出现编译器警告。例如:

.../ioapi.h:22:9: warning: macro name is a reserved identifier [-Wreserved-id-macro]
#define _ZLIBIOAPI64_H

ioapi.c有很多自己的警告,因此我使用-Wno-everything编译它,就像这样:

Compile Sources build phase

然而,头文件中没有可用的“编译器标志”设置:

Headers build phase

如何在不修改源文件的情况下消除警告?我不想修改它,��为它是外部依赖项。我也不想为整个项目打开它,因为它对我的代码有用的警告。


也许你需要在构建设置中将“启用模块”设置为“否”? - Leo
@Leo 那有什么用呢?我想要打开模块。 - Dov
1个回答

9
我使用以下链接找到了答案:https://dev59.com/UlvUa4cB1Zd3GeqPu5Vx#7535436 我想你的代码应该是这样的:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Weverything"
#import "ioapi.h" //Hide a warning in this header because we don't want to change our dependencies
#pragma clang diagnostic pop

编辑: 在我们的项目中,我并没有需要导入头文件,但是为了消除警告,我仍然将其导入到PrefixHeader.pch文件中。


但这需要修改源代码,我宁愿不这样做(如问题中所提到的)。我的任何代码都没有导入“ioapi.h”——只有其他MiniZip文件。此外,这个警告似乎已经在某个时候消失了。我现在在Xcode 7.3.1中看不到它了。 - Dov
@Dov,我很高兴你的警告消失了,我们知道这种情况有时会发生在Xcode上。我会澄清我的答案,但是我在自己的代码中没有必须要导入它。不过我还是在PrefixHeader.pch中导入了它,然后警告就消失了。 - Sashah
9
应该是 -Weverything(而不是最初发布的 -Wno-everything)。答案已相应编辑。 - Daniel Jones

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