哪个是抑制“未使用变量”警告的最佳方法

时间:2013-07-12 19:03:23

标签: ios objective-c c clang

有3种(我知道)抑制"未使用变量的方法"警告。任何特定方式都比其他方式更好?

首先

- (void)testString:(NSString *)testString
{
     (void)testString;
}

第二

- (void)testString:(NSString *)__unused testString
{

}

第三

- (void)testString:(NSString *)testString
{
    #pragma unused(testString)
}

3 个答案:

答案 0 :(得分:5)

这是我使用的方法:cross platform macro for silencing unused variables warning

它允许您为任何平台使用一个宏(尽管定义可能会有所不同,具体取决于编译器),因此这是一种非常便携的方法,可以表达您对基于C语言的流行编译器的意图。在GCC和Clang上,它等同于将您的第三个示例(#pragma unused(testString))包装到宏中。

使用链接答案中的示例:

- (void)testString:(NSString *)testString
{
    MONUnusedParameter(testString);
}

我发现这种方法最适合于可移植性和清晰度,与一些相当大的C,C ++,ObjC和ObjC ++代码库一起使用。

答案 1 :(得分:1)

如果您正在使用GCC进行编译,则可以利用属性扩展来设置“未使用”属性。像这样:

int somevar __attribute__((unused));

它也适用于未使用的参数警告(-Wunused-parameter)

要缩短写入时间,我正在使用此宏:

#define _U_ __attribute__((unused))

并声明如下:

int somevar _U_ ;

答案 2 :(得分:-9)

一种方法是在声明变量后无意义地赋值变量例如:

int foo;
foo = 0;

这应该抑制未使用的变量警告。这只是一个毫无意义的任务 但除此之外,我同意ouah,如果你必须从这三种中选择,第一种方法是最可靠的。