例如:
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;
}
其他回答
我通常写一个这样的宏:
#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) { }
看到它被标记为gcc,您可以使用命令行开关Wno-unused-parameter。
例如:
gcc -Wno-unused-parameter test.c
当然,这会影响整个文件(可能项目取决于你在哪里设置开关),但你不需要改变任何代码。
在MSVC中,要抑制特定的警告,只需将它的编号指定为/wd#就足够了。我的CMakeLists.txt包含这样的块:
If (MSVC)
Set (CMAKE_EXE_LINKER_FLAGS "$ {CMAKE_EXE_LINKER_FLAGS} / NODEFAULTLIB: LIBCMT")
Add_definitions (/W4 /wd4512 /wd4702 /wd4100 /wd4510 /wd4355 /wd4127)
Add_definitions (/D_CRT_SECURE_NO_WARNINGS)
Elseif (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUC)
Add_definitions (-Wall -W -pedantic)
Else ()
Message ("Unknown compiler")
Endif ()
现在我说不出/wd4512 /wd4702 /wd4100 /wd4510 /wd4355 /wd4127到底是什么意思,因为我已经三年没有关注MSVC了,但是他们压制了不影响结果的超学究警告。
我看到有人使用这种风格:
if (when || who || format || data || len);