gpt4 book ai didi

c++ - C/C++ 函数 - 如何允许原型(prototype)?

转载 作者:行者123 更新时间:2023-11-30 21:00:10 25 4
gpt4 key购买 nike

标题。

假设(因为,作为初学者,我不确定)编译器从上到下读取源代码。如果被调用的函数尚未定义,编译器如何理解在主函数中调用函数时应该执行哪些操作?

谢谢。

最佳答案

在大多数体系结构上,调用函数所需的汇编指令仅取决于该函数的参数数量和类型,而不取决于函数本身的实现方式。换句话说,调用任何按该顺序接受 int 和 double 的函数都需要完全相同的汇编指令序列。

当编译器读取函数原型(prototype)时,它通常不会生成任何代码,而只是在心里记下“好吧,当我看到有人从现在开始调用这个函数时,我就会知道函数所需参数的数量和类型,以便我可以生成正确的代码。”例如,如果它看到原型(prototype)

 void doTheThing(int, double);

当它看到调用时

double x, y;
doTheThing(x, y);

它可以生成计算 x 的代码,将其缩小为整数,然后(通过某种机制)将 x 和 y 的值存储为函数的参数,调用该函数,然后清理参数。它知道将 x 转换为 int 的原因是它看到了原型(prototype),并且根据架构的工作方式,它可以设置调用该函数的机制。

换句话说,原型(prototype)本身并不生成任何代码。相反,它通知编译器稍后如何生成代码,从而使参数被发送进来,并以正确的形式和顺序提取返回值。

关于c++ - C/C++ 函数 - 如何允许原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42846974/

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