c++默认参数顺序的问题

c++默认参数顺序为什么是自右往左?为什么不能从左往右呢?请问这是什么原因。

阅读 3.7k
2 个回答

自右往左 可以支持任意个参数

参数是要压栈的,栈 是先入后出,如果是从左往右压入栈中,要找到最左边的第一个参数就很麻烦~

压栈顺序和大端字节序和小端字节序一样,哪个都可以的。C语言默认选择从右往左,应该是因为栈是向下增长的,所以这样会使压入的参数内存排列正好和书写的顺序一致而已,调试看内存可能比较方便。不过实际代码访问都是栈指针+偏移的方式,所以对于机器来说没有特别意义。
能不能支持可变参数,主要是看是不是由调用者负责清除堆栈。比如__stdcall也是从右往左压栈,但是被调用者清除堆栈,所以不支持可变参数。
__pascal是模仿PASCAL语言从左往右压栈,VC已经不再支持了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题