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

AAV*_*AAV 11 c objective-c clang ios

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

第一

- (void)testString:(NSString *)testString
{
     (void)testString;
}
Run Code Online (Sandbox Code Playgroud)

第二

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

}
Run Code Online (Sandbox Code Playgroud)

第三

- (void)testString:(NSString *)testString
{
    #pragma unused(testString)
}
Run Code Online (Sandbox Code Playgroud)

jus*_*tin 5

这是我使用的方法:跨平台宏用于静默未使用的变量警告

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

使用链接答案中的示例:

- (void)testString:(NSString *)testString
{
    MONUnusedParameter(testString);
}
Run Code Online (Sandbox Code Playgroud)

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


Nul*_*lik 5

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

int somevar __attribute__((unused));
Run Code Online (Sandbox Code Playgroud)

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

为了缩短写作时间,我使用了这个宏:

#define _U_ __attribute__((unused))
Run Code Online (Sandbox Code Playgroud)

并声明如下:

int somevar _U_ ;
Run Code Online (Sandbox Code Playgroud)

  • 以“_”开头,后跟大写字母的标识符被保留。 (2认同)