Q_UNUSED有副作用吗?

时间:2013-10-24 21:20:17

标签: c++ qt macros qtcore

给出以下代码:

void test(int var)
{
     Q_UNUSED(var);
#ifdef SOMETHING
     printf("%d",var);
     //do something else with var...
#endif
}

如果我在某些情况下实际使用'var'变量(如上例所示),Q_UNUSED宏是否会产生任何影响,或者当我抑制未使用变量的编译器警告时它根本没有效果?

到目前为止,我发现它没有效果,但我想确定一下。

1 个答案:

答案 0 :(得分:27)

在许多情况下都没有(例如,只是将一个简单的变量传递给宏)。定义在qglobal.h

#  define Q_UNUSED(x) (void)x;

禁用未使用的变量警告。您可以在此宏之后使用该变量而不会出现任何问题。

但是,如果将表达式或其他内容传递给宏,并且编译器必须评估表达式,则可能会产生副作用