Ily*_*kiy 20 c++ macros qt qtcore
鉴于以下代码:
void test(int var)
{
Q_UNUSED(var);
#ifdef SOMETHING
printf("%d",var);
//do something else with var...
#endif
}
Run Code Online (Sandbox Code Playgroud)
Q_UNUSED
如果我在某些情况下实际使用'var'变量(如上例中所示),那么宏是否有任何影响,或者当我抑制未使用变量的编译器警告时它根本没有效果?
到目前为止,我发现它没有效果,但我想确定一下.
mas*_*oud 31
在许多情况下没有(例如只是将一个简单的变量传递给宏).定义在里面qglobal.h
:
# define Q_UNUSED(x) (void)x;
Run Code Online (Sandbox Code Playgroud)
禁用未使用的变量警告.您可以在此宏之后使用该变量而不会出现任何问题.
但是,如果您将表达式或其他内容传递给宏,并且编译器必须评估表达式,则可能会产生副作用†.