gpt4 book ai didi

C 原型(prototype)函数 - 目标文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:43 26 4
gpt4 key购买 nike

在 Linux 中编译 c 源文件时如何处理原型(prototype)函数?符号是存储在目标文件中(格式为ELF文件)还是存储签名以在链接时引用它?例如:

#define MAX 32
typedef struct{
float[3][3];
}Tensor_t;

float tensor_trace(Tensor_t* t);

“tensor_trace”是在某处分配的吗?

最佳答案

顺便说一句,您需要为 float 数组命名。

如果将显示的源代码编译为 C 文件,结果将是一个空目标文件。不会存储任何符号。

如果您使用显示的源代码作为包含在另一个 C 文件中的头文件,该文件调用tensor_trace(),目标文件将没有为其存储的符号.

如果您使用显示的源代码作为包含在另一个 C 文件中的头文件,该文件确实调用了 tensor_trace(),目标文件将为其存储一个符号。在生成调用的地方放置对该符号的引用。链接器会将此引用解析为必须在另一个模块中定义的函数。

所以回答你的问题:

Is "tensor_trace" allocated somwhere?

tensor_trace() 的机器代码将在定义它的模块中“分配”。该声明分配任何空间。

关于C 原型(prototype)函数 - 目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58101174/

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