调用约定

        本文主要介绍C/C++编译中的调用约定,包括:cdecl、stdcall、VC++编译器、mingw编译器、gcc编译器、g++编译器。

一、调用约定的内涵

调用约定主要约定两件事:

1,参数入栈的顺序;

2,函数调用结束后,谁(调用者or被调用者)来恢复栈。


二、cdecl

1,函数调用时,参从右到左入栈。

2,函数调用结束后,调用者负责恢复栈。

查看VS工程属性-> c/c++ -> 高级,可知VS默认为cdecl调用约定。


三、stdcall

1,函数调用时,参从右到左入栈。

2,函数调用结束后,被调用函数返回前,自己负责恢复栈。

Windows API采用stdcall,如关键字WINAPI 、CALLBACK。它不能用于可变参数函数调用。


具体参考博客:调用约定、mingw和mvc转换、msvc mingw dll

你可能感兴趣的:(调用约定)