(void)变量的意义

sr0*_*853 4 c c++ void

可能重复:
无效铸造有什么作用?

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

//This is in a .cpp file 
#if xxx == 5
(void)var;
#endif
Run Code Online (Sandbox Code Playgroud)

这是(void)var做什么的?这样做有什么意义.我听说这与此有关compilation.

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

P.P*_*.P. 7

(void)var;
Run Code Online (Sandbox Code Playgroud)

这个陈述没有任何效果.但有助于沉默编译器.

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


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

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

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

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

  • @vonbrand并不总是那么容易.对于业余爱好光线追踪项目,我在每个纹理类中都有一个函数,它采用一组UV坐标.在某些纹理中,这些参数不是必需的.但这并不意味着设计是错误的. (2认同)