__cdecl和(void)是什么意思?

时间:2019-06-06 06:13:48

标签: c++ void cdecl

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

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

我应该指出,我是C ++的新手。我以前只在C#和VB.NET中编程。

谢谢!

2 个答案:

答案 0 :(得分:4)

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

(void) v / s ()
C++中是等效的(无自变量)。
C中,前者意味着无自变量,后者意味着任何自变量参数数量。因此,当您将头文件重新用于C时,可能会导致问题。

答案 1 :(得分:0)

(void)表示它没有参数。更多的是代码风格的事情。您只能使用(),但写(void)则显式表明该函数没有参数。