这个宏是什么意思? #define UNUSED(x)((x)=(x))

时间:2013-11-15 07:43:47

标签: c++ c

这个宏是什么意思?我只是在源文件中找到以下宏:

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

4 个答案:

答案 0 :(得分:7)

可能存在抑制函数未使用的变量/参数的编译器警告。你也可以用这个:

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

或者

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

或者您的编译器可能支持一个标志来执行此操作,但这些标记是可移植的,不会跳过有效警告。

答案 1 :(得分:4)

使用它来删除引用未使用变量的任何编译器警告。

答案 2 :(得分:2)

某些编译器会发出有关未使用变量的警告 - 已定义但从未引用过的变量。有时您只有在某些条件ifdef下引用变量的代码(仅在某些平台上或仅在调试中),并且在定义变量时复制这些条件是不方便的。在这种情况下,可以使用这样的宏来抑制未使用的变量警告。

答案 3 :(得分:1)

它使编译器无法抱怨没有使用变量。

其他方法:

  • 完全删除变量:void foo( int )
  • 对变量发表评论:void foo( int /* value */ )
  • 使用该宏:void foo( int value ){ UNUSED(value); }