6

このマクロはどういう意味ですか? ソースファイルで次のマクロを見つけました。

#define UNUSED(x) ((x)=(x))
4

4 に答える 4

9

関数への未使用の変数/引数のコンパイラ警告を抑制するためにおそらくそこにあります。これを使用することもできます:

// C++ only
void some_func(int /*x*/)

または

// C and C++
void some_func(int x)
{
    (void)x;
}

または、コンパイラがフラグをサポートしている可能性がありますが、これらは移植可能であり、有効な警告をスキップしません。

于 2013-11-15T07:46:08.297 に答える
5

これを使用して、未使用の変数を参照するコンパイラの警告を取り除きます。

于 2013-11-15T07:46:13.480 に答える
2

一部のコンパイラは、未使用の変数 (定義されているが参照されていない変数) について警告を発します。いくつかの条件付き ifdef の下でのみ変数を参照するコード (一部のプラットフォームのみまたはデバッグのみ) があり、変数が定義されている時点でそれらの条件を複製するのは不便です。このようなマクロは、このような場合に未使用変数の警告を抑制するために使用できます。

于 2013-11-15T07:49:05.857 に答える
1

変数が使用されていないことをコンパイラが不平を言うのを防ぎます。

それを行う他の方法:

  • 変数を完全に削除します。void foo( int )
  • 変数をコメントアウトします:void foo( int /* value */ )
  • そのマクロを使用します:void foo( int value ){ UNUSED(value); }
于 2013-11-15T07:46:16.593 に答える