怎么样让编译器对某些函数不再抱怨warning: unused parameter ‘xxx’?

要求:
1. 只对指定的函数生效
2. 最好的编译器无关的(我用的是g++,如果不能实现编译器无关的,能让g++心满意足也足够了)
3. 不带来额外的运行时消耗
4. 给人带来的惊讶越小越好。(比如 signal = 0这样的做法就不推荐了)

求各种可行的有趣的quick but not dirty的解决方案。

阅读 14.4k
2 个回答

如果可能,请务必用正常方法消除 warning,真的多余就去掉吧

方法一:

void foo(int a) {
    (void)a;
    // ...
}

方法二:

#ifdef __GNUC__
#  define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
#else
#  define UNUSED(x) UNUSED_ ## x
#endif

void foo(int UNUSED(a)) {
    // ...
}

参考:http://stackoverflow.com/a/12891181

void f(int) {
    // ...
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏