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