例如:
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中,它会给出错误
错误:参数名称省略
当前回答
使用GCC的未使用属性:
int foo (__attribute__((unused)) int bar) {
return 0;
}
其他回答
在GCC中,可以用未使用的属性标记参数。
此属性附加到变量,意味着该变量为 意味着可能不被使用。GCC不会对此产生警告 变量。
在实践中,这是通过将__attribute__((未使用的))放在参数前面来实现的。例如:
void foo(workerid_t workerId) { }
就变成了
void foo(__attribute__((unused)) workerid_t workerId) { }
从c++ 17开始,[[maybe_unused]]属性可以用来抑制关于未使用参数的警告。
基于OP的示例代码:
Bool NullFunc([[maybe_unused]] const struct timespec *when, [[maybe_unused]] const char *who)
{
return TRUE;
}
我看到有人使用这种风格:
if (when || who || format || data || len);
给属性加标签是一种理想的方法。MACRO有时会导致混乱。 通过使用void(x),我们在处理过程中增加了开销。
如果不使用input参数,则使用
void foo(int __attribute__((unused))key)
{
}
如果没有使用函数中定义的变量
void foo(int key)
{
int hash = 0;
int bkt __attribute__((unused)) = 0;
api_call(x, hash, bkt);
}
稍后使用哈希变量作为逻辑,但不需要bkt。定义BKT为未使用,否则编译器说“BKT设置bt未使用”。
注意:这只是为了抑制警告,而不是为了优化。
gcc/g++特有的抑制源代码块未使用参数警告的方法是用以下pragma语句将其括起来:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
<code with unused parameters here>
#pragma GCC diagnostic pop