4

可能重复:
void cast 有什么作用?

我刚刚浏览了一个项目,发现了这个

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

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

添加 c 和 cpp 标记以防这很常见。

4

2 回答 2

7
(void)var;

这个声明实际上什么也没做。但有助于使编译器静音。

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


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

  • 该函数在头文件中声明。但函数体已被修改,其参数之一不再使用。但是修改头文件需要测试使用这个头文件的其他代码。
  • 编写了一个新函数,但稍后修改该函数时将使用当前未设置的参数。否则,需要在头文件和定义中修改函数原型。

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

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

于 2013-01-29T13:38:56.087 回答
3

转换为 void 是为了避免编译器警告未使用的变量。

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

于 2013-01-29T13:48:05.530 回答