Search code examples
c++voidcdecl

What do __cdecl and (void) mean?


I'm currently programming a tcp/ip server using WSA. After some troubleshooting a friend of mine said that i should use bool __cdecl winsock_server ( void ) instead of bool winsock_server().

But he didn't explain to me what __cdecl and (void) are doing. I already know that __cdecl changes the way how arguments are put on the stack on assembler level, but what does (void) mean?

I should point out that I'm new to C++. I only programmed in C# and VB.NET before.

Thanks in advance!


Solution

  • __cdecl
    You got it right. It enforces function calling convention to c-style and thus the way function is called (How arguments are passed, who cleans stack). BTW this is already default calling convention.

    (void) v/s ()
    In C++ they are equivalent(no arguments).
    In C however former means no arguments and latter means any number of arguments. So it can cause problems when you reuse the header file for C.