在代码内部禁止“未使用的参数”警告

时间:2015-07-17 10:17:48

标签: c++ qt macros

我想在代码中压制未处理的参数警告。

我的第一个方法是:

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()根本不会被触发。 所以这也不适合我。

那么我有什么方法可以使用代码变体来抑制警告?

2 个答案:

答案 0 :(得分:9)

解决方案#1 - 未命名的参数:

void RenderGraphFrame::mouseReleaseEvent(QMouseEvent *)

解决方案#2 - Qt Q_UNUSED宏:

void RenderGraphFrame::mouseReleaseEvent(QMouseEvent *event)
{
    Q_UNUSED(event)
    // Your code...
}

实际上,这个宏是下一个方法的 define

解决方案#3 - C方式:

void RenderGraphFrame::mouseReleaseEvent(QMouseEvent *event)
{
    (void)event;
    // Your code...
}

答案 1 :(得分:4)

这是因为QWidget::mouseReleaseEvent的参数是一个指针。你必须保留*:

void RenderGraphFrame::mouseReleaseEvent(QMouseEvent*)
{
  // Your code
}