Ios 哪一种是最好的压制方式;“未使用变量”;警告

Ios 哪一种是最好的压制方式;“未使用变量”;警告,ios,objective-c,c,clang,Ios,Objective C,C,Clang,有3种(我知道)方法可以抑制“未使用变量”警告。有哪种方法比其他方法更好 首先 - (void)testString:(NSString *)testString { (void)testString; } 第二 - (void)testString:(NSString *)__unused testString { } 第三 一种方法是在声明变量后无意义地赋值,例如: int foo; foo = 0; 这将抑制未使用变量警告。这只是一个毫无意义的任务。 但是,如果你必须从这

有3种(我知道)方法可以抑制“未使用变量”警告。有哪种方法比其他方法更好

首先

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

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

}
第三


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

int foo;
foo = 0;
这将抑制未使用变量警告。这只是一个毫无意义的任务。

但是,如果你必须从这三种方法中进行选择,那么我同意你的看法,第一种方法是最可靠的。

这是我使用的方法:

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

使用链接答案中的示例:

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

我发现这种方法最适合移植性和清晰性,在一些相当大的C、C++、Objc和Objc++代码库中使用。

< P>如果你在编译GCC,你可以利用属性扩展来设置“未使用”属性。像这样:

int somevar __attribute__((unused));
它还适用于未使用的参数警告(-Wunused参数)

为了缩短写入时间,我使用以下宏:

#define _U_ __attribute__((unused))
并声明如下:

int somevar _U_ ;

-Wno unused variable
删除或注释掉未使用的部分。第一种方法,强制转换为
void
是最方便、更惯用的方法。还有
#pragma-clang诊断推送#pragma-clang诊断忽略“-Wunused variable”#pragma-clang诊断弹出
-Wno unused variable是非常不专业的。这就像砸碎了一个小喇叭,当你开车没有系安全带时,它会提醒你,而不是系上安全带。“强制转换为空”是一种惯用方法,在每个编译器上都是有效的代码。我喜欢这个想法。我讨厌左缩进-pragma通过这样做,我们也可以解决这个问题。你不应该分配比只抑制警告所需的内存更多的内存。这可能会让以后阅读你的代码的人感到困惑。GCC也会警告它已设置,但未使用。
int somevar _U_ ;