有没有办法在Xcode中压制警告?
有没有办法在Xcode中压制警告?
例如,我正在调用一个未logging的方法,因为该方法不在头部,所以我得到了编译警告。 我知道我可以将其添加到我的头来停止警告,但我想知道是否有一种方法,而不是将其添加到标题(所以我可以保持标题清洁和标准)来压制警告? 一个杂注什么的?
要禁用每个文件的警告,使用Xcode 3和llvm-gcc-4.2,你可以使用:
#pragma GCC diagnostic ignored "-Wwarning-flag"
警告名称是某个gcc警告标志。
这会覆盖命令行上的任何警告标志。 尽pipe如此,它并不适用于所有警告。 添加-fdiagnostics-show-option到你的CFLAGS,你可以看到哪个标志可以用来禁用该警告。
有一个更简单的方法来抑制未使用的variables警告:
#pragma unused(varname)
编辑:来源: http : //www.cocoadev.com/index.pl?XCodePragmas
更新:我遇到了一个新的解决scheme,一个更强大的
- 打开项目>编辑活动目标>生成选项卡。
- 在
User-Defined
:find(或者如果找不到,则创build)键:GCC_WARN_UNUSED_VARIABLE
将其设置为NO
。
编辑-2例如:
BOOL ok = YES; NSAssert1(ok, @"Failed to calculate the first day the month based on %@", self);
编译器会显示未使用的variables警告。
解:
BOOL ok = YES; #pragma unused(ok) NSAssert1(ok, @"Failed to calculate the first day the month based on %@", self);
PS:您也可以设置/重置其他警告: GCC_WARN_ABOUT_RETURN_TYPE
: YES/NO
对于gcc你可以使用
#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wshadow-ivar" // your code #pragma GCC diagnostic pop
您可以在这里了解GCC编译指示,并获得警告的警告代码转到日志导航器(Command + 7),select最上面的版本,展开日志(右侧的“=”button),然后滚动到底部和那里你的警告代码是这样的方括号内[-Wshadow-ivar]
对于铿锵声,你可以使用
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wshadow-ivar" // your code #pragma clang diagnostic pop
为了抑制个别文件的警告,请执行以下操作:
在xcode项目中select文件。 按获取信息转到与构build选项的页面input-Wno-取消警告:
-Wno-
例如
-Wno未使用的参数
如果您看到项目设置,查看位于生成标签页底部的GCC警告,可以通过单击每个警告来告诉您警告参数名称,您可以获得警告的名称:
例如
除了声明之外,只要函数参数没有被使用,就会发出警告。 [GCC_WARN_UNUSED_PARAMETER,-Wunused-parameter]
为了摆脱这个警告:尝试创build一个有问题的对象的类别界面
@interface NSTheClass (MyUndocumentedMethodsForNSTheClass) -(id)theUndocumentedMethod; @end ... @implementation myClass : mySuperclass -(void) myMethod { ... [theObject theUndocumentedMethod]; ... }
另外,我强烈build议不要在运输代码中调用未logging的方法。 界面可以而且会改变,这将是你的错。
使用Objective-C,许多严重的错误只会作为警告出现。 我不但不会禁用警告,我通常会打开“将警告视为错误”( – 错误)。
代码中的每种警告都可以通过正确处理(通常通过将对象转换为正确的types)或者在需要时声明原型来避免。
抑制特定的警告是不安全的。 编译器需要知道参数的types,并返回一个方法来生成正确的代码。
例如,如果你正在调用这样的方法
[foo doSomethingWithFloat:1.0];
这需要一个浮点数,并且没有可见的原型,那么编译器会猜测这个方法需要一个double而不是float。 这可能导致崩溃和不正确的解释值。 在上面的例子中,在像intel机器这样的小端机器上,接收器方法会看到0,而不是1。
你可以阅读为什么在i386 ABI文档 ,或者你可以修复你的警告。 🙂
创build一个名为“Undocumented.h”的新的单独头文件,并将其添加到您的项目中。 然后为每个要调用未logging函数的类创build一个接口块,并为每个类提供“(未logging)”。 然后在PCH中只包含一个头文件。 这样,您的原始头文件保持清洁,只有一个文件需要维护,您可以在PCH中注释掉一行,重新启用所有警告。
我也在“Depreciated.h”中使用这种方法来折旧函数,其中“(Depreciated)”类别。
最好的部分是你可以select性地启用/禁用个别警告,通过评论或取消注释个别原型。