函数调用约定的区别

  • Post author:
  • Post category:其他


对于X86的体系结构来说,主要有两种函数调用的约定:cdecl和stdcall。cdcel调用规定:调用方按从右到左的顺序将函数参数放入到栈中,调用方负责从栈中清除参数,这样无论该函数需要多少函数,我们都轻易能找到第一个参数,非常适合那些参数数量可变的函数:如printf(可以查看原型,确实是cdcel调用)。而stdcall参数的入栈的方式一样的,但是需要被调用方清除参数,适合参数固定的函数。因为为了完成清除任务,它必须知道有多少个参数。这样printf不适合该调用方式。



版权声明:本文为xidian208原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。