(void)变量的意义

时间:2013-01-29 13:37:45

标签: c++ c void

  

可能重复:
  What does void casting do?

我只是在浏览一个项目并找到了这个

//This is in a .cpp file 
#if xxx == 5
(void)var;
#endif

(void)var做了什么?这样做有什么意义。 我听说这与compilation有关。

添加c和cpp标签这很常见。

2 个答案:

答案 0 :(得分:7)

(void)var;

这句话实际上没有任何效果。但有助于沉默编译器。

主要是为了避免未使用的变量警告。


回复@ vonbrand的评论。以下是有用的情况。

  • 该函数在头文件中声明。但是函数体已被修改,并且不再使用其参数之一。但修改标题需要测试其他代码 那是使用这个头文件。
  • 写入一个新函数,但稍后修改该函数时将使用当前 unsed 的参数。否则,函数原型需要在中进行修改 标题和定义。

例如在gcc中,当makefile中默认使用编译选项-Werror时,可能不希望修改整个项目。此外,它完全无害 可移植到任何变量(void)var;。所以我不明白为什么在某些情况下帮助程序员生活更容易是一个坏主意。

因此,并不总是希望摆脱未使用的变量。这样做在以后需要时需要更多的工作。

答案 1 :(得分:3)

完成转换为void以避免编译器对未使用的变量发出警告。

这也可以使用编译器的标志在全局级别完成:-Wno-unused-variable。