__cdecl 和 (void) 是什么意思?
What do __cdecl and (void) mean?
我目前正在使用 WSA 对 tcp/ip 服务器进行编程。经过一些故障排除后,我的一个朋友说我应该使用 bool __cdecl winsock_server ( void )
而不是 bool winsock_server()
。
但是他没有向我解释什么__cdecl
和(void)
是做。我已经知道 __cdecl
改变了参数在汇编程序级别上放置在堆栈上的方式,但是 (void)
是什么意思?
我应该指出,我是 C++ 的新手。我以前只用 C# 和 VB.NET 编程。
提前致谢!
(void) 表示它没有参数。它更像是一种代码风格的东西。你可以只使用 () 但写 (void) 明确表明该函数没有参数。
__cdecl
你没看错。它强制执行 c-style 的函数调用约定,从而调用函数的方式(如何传递参数,谁清理堆栈)。顺便说一句,这已经是默认的调用约定。
(void)
v/s ()
在C++
中它们是等价的(没有参数)。
在C
中但是前者意味着没有参数后者表示任意数量的参数。因此当您重用 C
.
的头文件时可能会导致问题
我目前正在使用 WSA 对 tcp/ip 服务器进行编程。经过一些故障排除后,我的一个朋友说我应该使用 bool __cdecl winsock_server ( void )
而不是 bool winsock_server()
。
但是他没有向我解释什么__cdecl
和(void)
是做。我已经知道 __cdecl
改变了参数在汇编程序级别上放置在堆栈上的方式,但是 (void)
是什么意思?
我应该指出,我是 C++ 的新手。我以前只用 C# 和 VB.NET 编程。
提前致谢!
(void) 表示它没有参数。它更像是一种代码风格的东西。你可以只使用 () 但写 (void) 明确表明该函数没有参数。
__cdecl
你没看错。它强制执行 c-style 的函数调用约定,从而调用函数的方式(如何传递参数,谁清理堆栈)。顺便说一句,这已经是默认的调用约定。
(void)
v/s ()
在C++
中它们是等价的(没有参数)。
在C
中但是前者意味着没有参数后者表示任意数量的参数。因此当您重用 C
.