1

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

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

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

提前致谢!

4

2 回答 2

9

__cdecl
你答对了。它强制执行 c 风格的函数调用约定,因此调用函数的方式(如何传递参数,谁清理堆栈)。顺便说一句,这已经是默认调用约定。

(void)v/s()
C++它们中它们是等价的(没有参数)。
然而C,前者意味着没有参数,后者意味着任意数量的参数。因此,当您将头文件重用于C.

于 2019-06-06T06:18:59.473 回答
0

(void) 表示它没有参数。它更像是一种代码风格的东西。你可以只使用 () 但写 (void) 显式表明该函数没有参数。

于 2019-06-06T06:18:36.107 回答