例如:
Bool NullFunc(const struct timespec *when, const char *who)
{
return TRUE;
}
在c++中,我可以把/*…*/注释参数。当然不是在C中,它会给出错误
错误:参数名称省略
例如:
Bool NullFunc(const struct timespec *when, const char *who)
{
return TRUE;
}
在c++中,我可以把/*…*/注释参数。当然不是在C中,它会给出错误
错误:参数名称省略
当前回答
从c++ 17开始,[[maybe_unused]]属性可以用来抑制关于未使用参数的警告。
基于OP的示例代码:
Bool NullFunc([[maybe_unused]] const struct timespec *when, [[maybe_unused]] const char *who)
{
return TRUE;
}
其他回答
我通常写一个这样的宏:
#define UNUSED(x) (void)(x)
您可以将此宏用于所有未使用的参数。(注意,这适用于任何编译器。)
例如:
void f(int x) {
UNUSED(x);
...
}
在GCC中,可以用未使用的属性标记参数。
此属性附加到变量,意味着该变量为 意味着可能不被使用。GCC不会对此产生警告 变量。
在实践中,这是通过将__attribute__((未使用的))放在参数前面来实现的。例如:
void foo(workerid_t workerId) { }
就变成了
void foo(__attribute__((unused)) workerid_t workerId) { }
为了记录,我喜欢Job的答案,但我对一个解决方案很好奇,只是在“什么都不做”的语句中使用变量名:
void foo(int x) {
x; /* unused */
...
}
当然,这也有缺点;例如,如果没有“未使用”注释,它看起来就像一个错误,而不是有意的代码行。
这样做的好处是不需要DEFINE,并且消除了警告。
我看到有人使用这种风格:
if (when || who || format || data || len);
使用GCC的未使用属性:
int foo (__attribute__((unused)) int bar) {
return 0;
}