一位同事写了这样一个函数(评论是我写的):
static void foo(void *arg)
{
//arg is NOT global variable
arg = arg;
// call other function, but doesn't use arg
foo2();
}
是否有理由编写这样的代码?它有一些特殊用途吗?
答案 0 :(得分:7)
这只是抑制未使用参数的编译器警告的一种方法。
其他常见方法是:
(void)arg;
或
#pragma unused (arg) // not supported by all compilers
答案 1 :(得分:5)
可能是为了将来的扩展目的。现在,该参数未被使用,但可能在更高版本中,它可用于更多功能,而无需更改功能签名。
添加 Paul R。指出的目的,arg = arg;
语句只是尝试使用arg
来抑制编译器警告,以获得干净的无警告构建
P.S。:这样的代码也在我公司使用。
答案 2 :(得分:3)
看起来只是为了避免“未使用的参数”警告。他们可以使用__attribute__((unused))
作为arg。