Ale*_*x B 57
在以下情况下,具有未使用参数的函数可能存在真正的错误:
有一个输出参数,它没有被分配或写入,导致调用者的值不确定.
其中一个参数是回调函数指针,您必须调用它并忘记这样做.如果#ifdef函数中有很多s,可能会发生.
声明一个具有相同名称的局部变量,该变量会影响参数,然后在函数中使用错误的值.
不使用输入参数可能是无害的,但是您可以通过将函数开头显式地标记未使用的输入参数void(适用于C和C++)来降低噪声以查看有用的警告:
(void)param1;
Run Code Online (Sandbox Code Playgroud)
要么,
#define UNUSED(expr) do { (void)(expr); } while (0)
...
void foo(int param1, int param2)
{
UNUSED(param2);
bar(param1);
}
Run Code Online (Sandbox Code Playgroud)
或者省略参数名称(仅限C++):
void foo(int param1, int /*param2*/)
{
bar(param1);
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*itb 14
对于禁用警告的gcc特定方法,您可以使用__attribute__((unused))like
void foo(int a, int b __attribute__((unused))) {
}
Run Code Online (Sandbox Code Playgroud)
忽略第二个参数.如果您的程序已经依赖于GCC技术,那么您可以使用该属性从该类警告中100%安全.
| 归档时间: |
|
| 查看次数: |
15447 次 |
| 最近记录: |