gpt4 book ai didi

c - 不同编译单元中的多个函数声明

转载 作者:行者123 更新时间:2023-11-30 17:51:46 26 4
gpt4 key购买 nike

零.c:

    int sq();

一个.c:

    int sq(int i) { return i*i; }

两个.c:

    int sq(int i, int j);

main.c:

    int main() {
printf("%d\n",sq());
printf("%d\n",sq(2));
printf("%d\n",sq(2,3));
}

然后我单独编译每个文件并 gcc Zero.o one.o Two.o main.o -o main

./main 给出

1
4
4

我有点困惑这如何成功。当我调用 sq()sq(2)sq(2,3)

时到底发生了什么

最佳答案

如果您想知道到底发生了什么,请让 gcc 输出 main.o 的程序集并查看一下。我想你会发现当你调用 sq() 时,参数被加载到你机器上的基址寄存器中,然后 sq(int i) 将在第一个寄存器上执行乘法指令。如果您传递其他参数,它们不会产生任何影响,如果您不传递任何参数,它将仅对先前加载到该寄存器中的任何值起作用。

关于c - 不同编译单元中的多个函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16526135/

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