我有以下功能:
void foo(char *ptr_1)
{
char *ptr_2;
bar(ptr_2);
ptr_1 = ptr_2;
}
并得到以下警告:
参数“ ptr_1”已设置但从未使用过
我了解该警告在技术上是正确的,但同时无关紧要。我可以用以下方法抑制它:
(void)(ptr_1)
但是有更好的方法吗?
这不是无关紧要的警告,因为分配无效。您可以完全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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句