我有以下功能:
void foo(char *ptr_1)
{
char *ptr_2;
bar(ptr_2);
ptr_1 = ptr_2;
}
得到这个警告:
参数" ptr_1"已设置但从未使用过
我理解警告在技术上是正确的,但同时又无关紧要。我可以用:
压制它(void)(ptr_1)
但是有更好的方法吗?
答案 0 :(得分:5)
这不是无关紧要的警告,因为作业没有效果。您可以从代码中完全删除ptr_1
而不更改其行为。您的代码等同于:
void foo(char *)
{
char *ptr_2;
bar(ptr_2);
}
换句话说,函数参数不用于任何事情。如果您打算在调用者端更改指针,则需要将指针传递给指针并取消引用它,或者返回新值并让调用者使用其值:
void foo(char **ptr_1)
{
char *ptr_2;
bar(ptr_2);
*ptr_1 = ptr_2;
}
或
char* foo()
{
char *ptr_2;
bar(ptr_2);
return ptr_2;
}
答案 1 :(得分:1)
我知道警告在技术上是正确的,但同时无关紧要。
嗯,这里的代码也是如此。从你的代码的角度来看,你可以摆脱违规的指令本身。
另外(我的个人观点),使用警告处理几乎总是更好,而不是压制它们。毕竟,他们是有原因的。
答案 2 :(得分:0)
简单的方法是...
int dClock;//variable initiated without used anywhere.
dClock = dClock;//assign variable to itself to suppress not used warning.
在基尔工作!