6

一位同事写了一个这样的函数(评论是我写的):

static void foo(void *arg)
{
    //arg is NOT global variable
    arg = arg;
    // call other function, but doesn't use arg
    foo2();
}

有什么理由写这样的代码吗?它有什么特殊用途吗?

4

3 回答 3

7

这只是抑制未使用参数的编译器警告的一种方法。

其他常用方法有:

(void)arg;

或者

#pragma unused (arg)    // not supported by all compilers
于 2013-10-24T08:44:23.187 回答
5

它可能是为了将来的扩展目的。现在该参数没有被使用,但可能在以后的版本中它可以用于更多功能,而无需更改函数签名。

添加Paul R.指出的目的,arg = arg;语句只是尝试使用arg来抑制编译器警告,以获得干净的无警告构建。

PS:我公司也使用了这样的代码。

于 2013-10-24T08:44:05.983 回答
3

看起来这样做只是为了避免“未使用的参数”警告。他们可以只__attribute__((unused))用于 arg。

于 2013-10-24T08:45:17.353 回答