Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我目前正在使用 WSA 编写一个 tcp/ip 服务器。经过一些故障排除后,我的一个朋友说我应该使用bool __cdecl winsock_server ( void )而不是bool winsock_server().
bool __cdecl winsock_server ( void )
bool winsock_server()
但他没有向我解释什么__cdecl和(void) 正在做什么。我已经知道这__cdecl改变了在汇编程序级别上将参数放入堆栈的方式,但这是什么(void)意思?
__cdecl
(void)
我应该指出我是 C++ 新手。我以前只用 C# 和 VB.NET 编程过。
提前致谢!
__cdecl你答对了。它强制执行 c 风格的函数调用约定,因此调用函数的方式(如何传递参数,谁清理堆栈)。顺便说一句,这已经是默认调用约定。 (void)v/s()在C++它们中它们是等价的(没有参数)。然而C,前者意味着没有参数,后者意味着任意数量的参数。因此,当您将头文件重用于C.
()
C++
C
(void) 表示它没有参数。它更像是一种代码风格的东西。你可以只使用 () 但写 (void) 显式表明该函数没有参数。