调用约定调用惯例

调用约定/调用惯例

调用约定调用方被调用方对于函数如何调用的一个明确的约定,只有双方都遵守同样的约定函数才能被正确的调用。

 int foo(int n, float m)
 {
 	int a = 0, b = 0;
 	//````
 }

如果函数的调用方在传递参数室先压入参数n,再压入参数m,而函数则认为调用方应该先先压入参数m,再压入参数n,那么在内部中mn的值将会被交换。
再者,如果函数的调用方决定利用寄存器传递参数,而函数本身仍然认为参数通过传递,那么显然函数无法获取正确的参数。
所以函数的调用方被调用方对于函数如何调用需要有一个明确的约定。


一个调用惯例一般会规定以下方面的内容

  • 函数参数的传递顺序和方式
    函数参数的传递方式有很多种方式,最常见的一种是通过栈传递。函数的调用方将参数压入栈中,函数自己再从栈中将参数取出。对于有多个参数的函数,调用惯例要规定函数调用方将参数压栈的顺序:是从左至右,还是从右至左。有些调用惯例还允许使用寄存器传递参数,以提高性能。
  • 的维护方式
    在函数将参数压栈之后,函数体会被调用,此后需要将被压入栈中的参数全部弹出,以使得栈在函数调用前后保持一致。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值