指针参数已设置但从未使用警告
Pointer parameter was set but never used warning
我有以下功能:
void foo(char *ptr_1)
{
char *ptr_2;
bar(ptr_2);
ptr_1 = ptr_2;
}
并收到此警告:
parameter "ptr_1" was set but never used
我了解该警告在技术上是正确的,但同时无关紧要。我可以通过以下方式抑制它:
(void)(ptr_1)
但是有没有更好的方法呢?
这不是不相关的警告,因为赋值没有效果。您可以从代码中完全删除 ptr_1
而无需更改其行为。您的代码等同于:
void foo(char *)
{
char *ptr_2;
bar(ptr_2);
}
换句话说,函数参数没有任何用途。如果您打算在调用方更改指针,则需要将指针传递给指针并取消引用它,或者 return 新值并让调用方使用它的值:
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;
}
I understand that the warning is technically true, but is irrelevant at the same time.
好了,这里的代码也是如此。从您的代码的这个角度来看,您可以摆脱有问题的指令本身。
另外(我个人的意见),处理警告几乎总是比抑制警告更好。毕竟,他们在那里是有原因的。
简单的方法是....
int dClock;//variable initiated without used anywhere.
dClock = dClock;//assign variable to itself to suppress not used warning.
在keil工作过!
我有以下功能:
void foo(char *ptr_1)
{
char *ptr_2;
bar(ptr_2);
ptr_1 = ptr_2;
}
并收到此警告:
parameter "ptr_1" was set but never used
我了解该警告在技术上是正确的,但同时无关紧要。我可以通过以下方式抑制它:
(void)(ptr_1)
但是有没有更好的方法呢?
这不是不相关的警告,因为赋值没有效果。您可以从代码中完全删除 ptr_1
而无需更改其行为。您的代码等同于:
void foo(char *)
{
char *ptr_2;
bar(ptr_2);
}
换句话说,函数参数没有任何用途。如果您打算在调用方更改指针,则需要将指针传递给指针并取消引用它,或者 return 新值并让调用方使用它的值:
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;
}
I understand that the warning is technically true, but is irrelevant at the same time.
好了,这里的代码也是如此。从您的代码的这个角度来看,您可以摆脱有问题的指令本身。
另外(我个人的意见),处理警告几乎总是比抑制警告更好。毕竟,他们在那里是有原因的。
简单的方法是....
int dClock;//variable initiated without used anywhere.
dClock = dClock;//assign variable to itself to suppress not used warning.
在keil工作过!