Return type _Cdecl

Question:
I have seen that in many of the header files in C++ the return type is _Cdecl. For example, in complex.h, we have the following:

     friend complex _Cdecl acos(complex&)

What does _Cdecl mean, and how can we use it in our programs?

Answer:
Although it may look like it, _cdecl does not specify a return type. It specifies that the function uses the C calling convention, the default for C and C++ programs.

Calling conventions specify how the compiler generates code to call a function. For example, the C calling convention specifies that arguments are pushed onto the stack in reverse order and that the caller is responsible for restoring the stack. The _stdcall calling convention, which is used by Win32 API functions, specifies that the called function must restore the stack.

Although it really doesn’t matter which calling convention you use, it is critical that the calling code uses the same calling convention used by the function you are calling. Normally, you won’t need to worry about this. Simply use the declarations provided by anyone who writes functions that you call. However, because some systems support functions with different calling conventions, you will sometimes see the calling convention specified in the declarations.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: