__cdecl 和 (void) 是什么意思?

Acr*_*mEx 1 c++ cdecl void

我目前正在使用 WSA 对 tcp/ip 服务器进行编程。经过一些故障排除后,我的一个朋友说我应该使用bool __cdecl winsock_server ( void )而不是bool winsock_server().

但他没有向我解释什么__cdecl(void) 正在做什么。我已经知道这__cdecl改变了在汇编程序级别上将参数放入堆栈的方式,但这是什么(void)意思?

我应该指出我是 C++ 的新手。我之前只用 C# 和 VB.NET 编程。

提前致谢!

Gya*_*ain 8

__cdecl
你做对了。它将函数调用约定强制为 c 样式,从而调用函数的方式(如何传递参数,谁清理堆栈)。顺便说一句,这已经是默认的调用约定。

(void)V / S()
C++它们是等效的(无参数)。
C但前者表示没有参数,后者意味着任何数量的参数。因此,当您将头文件重用于C.