c++ - 在函数调用之前使用 (void)

标签 c++ c

Possible Duplicate:
casting unused return values to void

函数调用前(void)的作用是什么,例如

(void)func1();

我认为这与简单地调用 func1();

相同

因此,(void) 调用只是为了让其他程序员知道返回类型将被忽略,例如,如果 func1() 的返回类型为 int,或者编译器是否会对函数进行一些优化?也许它背后还有另一个原因——它甚至是合法的 C++,还是它是在某些遗留代码中看到的 C 的残余。

谢谢

最佳答案

在一种情况下,强制转换为 void 会产生语义效果:如果值是逗号运算符的操作数并覆盖逗号运算符,则强制转换为 void 会抑制它:

struct S {
  int operator,(int) { return 0; }
};
std::cout << (S(), 42) << '\n';           // prints '0'
std::cout << ((void) S(), 42) << '\n';    // prints '42'

关于c++ - 在函数调用之前使用 (void),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13954517/

相关文章:

c++ - sqlite CREATE INDEX exec 返回错误

c++ - 如何让用户输入正双变量?

android - Qt android 屏幕锁定java问题

c - Eustis 上检测到堆栈粉碎

c++ - 围绕旋转点放置对象

c++ - 检测派生类中是否已重新定义 C++ 虚函数的方法

c - 从 C 代码中弹出 Cd rom 时出现输入/输出错误

c - 在具有可变参数的函数中传递 "enum"时出错

c++ - Win32 程序的编译器?

c - 为什么这会返回 NULL