例如:

Bool NullFunc(const struct timespec *when, const char *who)
{
   return TRUE;
}

在c++中,我可以把/*…*/注释参数。当然不是在C中,它会给出错误

错误:参数名称省略


当前回答

看到它被标记为gcc,您可以使用命令行开关Wno-unused-parameter。

例如:

gcc -Wno-unused-parameter test.c

当然,这会影响整个文件(可能项目取决于你在哪里设置开关),但你不需要改变任何代码。

其他回答

我看到有人使用这种风格:

if (when || who || format || data || len);

我也有同样的问题。我使用了第三方库。当我编译这个库时,编译器(gcc/clang)将报错未使用的变量。

像这样

test.cpp:29:11:警告:变量'magic'设置但未使用[- wunused but-set-variable] 短魔术[]= { test.cpp:84:17:警告:未使用的变量'before_write' [-Wunused-variable] int64_t before_write = Thread::currentTimeMillis();

所以解决方案很清楚。添加-Wno-unused作为gcc/clang CFLAG将抑制所有“unused”警告,即使你有-Wall set。

通过这种方式,您不需要更改任何代码。

从c++ 17开始,[[maybe_unused]]属性可以用来抑制关于未使用参数的警告。

基于OP的示例代码:

Bool NullFunc([[maybe_unused]] const struct timespec *when, [[maybe_unused]] const char *who)
{
   return TRUE;
}

在GCC中,可以用未使用的属性标记参数。

此属性附加到变量,意味着该变量为 意味着可能不被使用。GCC不会对此产生警告 变量。

在实践中,这是通过将__attribute__((未使用的))放在参数前面来实现的。例如:

void foo(workerid_t workerId) { }

就变成了

void foo(__attribute__((unused)) workerid_t workerId) { }

我通常写一个这样的宏:

#define UNUSED(x) (void)(x)

您可以将此宏用于所有未使用的参数。(注意,这适用于任何编译器。)

例如:

void f(int x) {
    UNUSED(x);
    ...
}