15

有 3 种(我知道)方法可以抑制“未使用的变量”警告。有什么特别的方式比其他方式更好吗?

第一的

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

第二

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

}

第三

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

3 回答 3

7

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

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

使用链接答案中的示例:

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

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

于 2013-07-12T22:01:08.040 回答
5

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

int somevar __attribute__((unused));

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

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

#define _U_ __attribute__((unused))

并像这样声明:

int somevar _U_ ;
于 2016-09-02T03:03:39.517 回答
-9

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

int foo;
foo = 0;

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

于 2013-07-12T20:35:33.603 回答