web-dev-qa-db-ja.com

Q_UNUSEDには副作用がありますか?

次のコードがあるとします。

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

Q_UNUSEDマクロがあるシナリオ(上記の例のように)で実際に 'var'変数を使用している場合、または未使用の変数に対するコンパイラの警告を抑制してもまったく効果がない場合

これまでのところ、効果はありませんが、確認したいと思います。

22

いいえ(多くの場合、単純な変数をマクロに渡すだけなど)。定義はqglobal.h内にあります:

#  define Q_UNUSED(x) (void)x;

未使用の変数の警告を無効にします。このマクロの後に変数を問題なく使用できます。

ただし、マクロに式などを渡し、コンパイラが式を評価する必要がある場合、副作用がある可能性があります

33
masoud