gpt4 book ai didi

c - 可变参数函数中的参数如何在堆栈上传递?

转载 作者:行者123 更新时间:2023-12-02 05:19:42 24 4
gpt4 key购买 nike

我以为函数在完成后会从堆栈中删除参数,但是像 printf 这样的函数在调用时会从堆栈中删除可变数量的参数。

它如何知道要从堆栈中删除多少个参数?是否有一个 secret 参数来指定传递多少个参数?

谢谢

最佳答案

C 调用约定 指定是调用者 而不是被调用者 负责从堆栈中弹出参数。这就是为什么具有可变参数列表的函数必须是 cdecl。所以,

I thought that the function removes the parameters from the stack after it's done.

这仅适用于某些调用约定,它不适用于 C 调用约定

How does it know how many parameters to remove from the stack? Is there a secret argument to specify how many arguments are passed?

事实并非如此,而且不存在 secret 争论。

关于c - 可变参数函数中的参数如何在堆栈上传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14086005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com