指针参数已设置但从未使用过警告

时间:2015-06-17 09:16:20

标签: c pointers compiler-warnings suppress-warnings keil

我有以下功能:

void foo(char *ptr_1)
{
    char *ptr_2;

    bar(ptr_2);

    ptr_1 = ptr_2;
}

得到这个警告:

  

参数" ptr_1"已设置但从未使用过

我理解警告在技术上是正确的,但同时又无关紧要。我可以用:

压制它
(void)(ptr_1)

但是有更好的方法吗?

3 个答案:

答案 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.

在基尔工作!