我目前正在使用WSA对tcp / ip服务器进行编程。经过一些故障排除后,我的一个朋友说我应该使用bool __cdecl winsock_server ( void )
而不是bool winsock_server()
。
但是他没有向我解释__cdecl
和(void)
是什么
是做。我已经知道__cdecl
会改变汇编程序级别将参数放入堆栈的方式,但是(void)
是什么意思?
我应该指出,我是C ++的新手。我以前只在C#和VB.NET中编程。
谢谢!
答案 0 :(得分:4)
__cdecl
您说对了。它强制将函数调用约定强制为c样式,从而调用函数的方式(如何传递参数,谁清理堆栈)。顺便说一句,这已经是默认的调用约定。
(void)
v / s ()
在C++
中是等效的(无自变量)。
在C
中,前者意味着无自变量,后者意味着任何自变量参数数量。因此,当您将头文件重新用于C
时,可能会导致问题。
答案 1 :(得分:0)
(void)表示它没有参数。更多的是代码风格的事情。您只能使用(),但写(void)则显式表明该函数没有参数。