【发布时间】:2015-07-17 10:17:48
【问题描述】:
我想在代码中抑制未使用的参数警告。
我的第一个方法是:
void RenderGraphFrame::mouseReleaseEvent(QMouseEvent *UNUSED(event))
{
MousebuttonHold = false;
updateGL();
return;
}
定义如下:
#define UNUSED(NAME) USE_IT(NAME)
#define USE_IT(NAME) UNUSED_ ## NAME
这不起作用。经过一些 SO 研究后,我发现在 C++ 中我可以做到:
void RenderGraphFrame::mouseReleaseEvent(QMouseEvent)
{/*...*/}
这很好地解决了警告的问题,但是现在......
mouseReleaseEvent() 不再被触发。
所以这对我也不起作用。
那么我还有哪些其他方法可以使用代码变体来抑制警告?
【问题讨论】:
-
除了匿名参数之外,
(void)NAME;是一个常用的习惯用法,用于将变量标记为未使用(虽然在技术上以毫无意义的方式使用它)。所以你想#define UNUSED(NAME) ((void)NAME) -
@leemes:但这必须在函数体中完成,对吧?我无法想象它会在参数列表中工作。因为它会抛出一个额外的类型。
-
对,在体内。抱歉,我没有看到您在示例中如何使用宏,我以为您在谈论在正文中使用它。 - 啊,我现在看到你使用 Qt。已经有一个宏:
Q_UNUSED;) -
@leemes:但我想在参数列表中使用它。无论如何感谢您的输入:)
-
然后,除了匿名参数之外,您还可以尝试在参数名称后添加
__attribute__((unused)),或者至少在函数签名期间禁用警告(通过在签名)。但是这两种解决方案都是非标准的。