1. ホーム
  2. c++

[解決済み] Q_UNUSEDに副作用はありますか?

2022-02-08 20:26:26

質問事項

次のようなコードがあるとする。

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;

無効化する場合 未使用変数 の警告を表示します。このマクロの後の変数は、問題なく使用できます。

しかし、マクロに式などを渡して、コンパイラが式を評価しなければならない場合、副作用が発生する可能性があります。 .