给定以下代码:
void test(int var)
{
Q_UNUSED(var);
#ifdef SOMETHING
printf("%d",var);
//do something else with var...
#endif
}
如果Q_UNUSED
我在某些情况下(如上面的示例中)实际使用“var”变量,宏是否会有任何影响,或者当我禁止未使用变量的编译器警告时它根本没有影响?
到目前为止,我观察到它没有效果,但我想确定一下。
在许多情况下不(例如,只是将一个简单的变量传递给宏)。定义在里面qglobal.h
:
# define Q_UNUSED(x) (void)x;
禁用未使用的变量警告。您可以毫无问题地使用此宏之后的变量。
但是,如果您将表达式或其他内容传递给宏并且编译器必须评估该表达式,它可能会产生副作用†。