C/C++标准有没有规定"调用约定"的内容,例如函数的参数要从右向左压入堆栈?
例如,我知道GCC/VC的函数参数都是从右向左压栈的。这个东西到底是编译器实现的某种选择,还是C/C++标准规定了的顺序或者方向?
[解决办法]
c标准没有规定,是编译器实现的
c标准中的说明(6.9.1.9)是The layout of the storage for parameters is unspecified.
常见的实现方式有以下这些
cdecl
syscall
optlink
pascal
stdcall
Microsoft fastcall
Borland fastcall
watcom register based calling convention
TopSpeed/Clarion/JPI
safecall
thiscall
Microsoft x64 calling convention
System V AMD64 ABI