C 原型函数 - 目标文件

C Prototype Function - object file

在Linux中编译c源文件时如何处理原型函数?符号是存储在目标文件中(格式为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() 的机器代码在定义它的模块中将是 "allocated"。该声明 分配任何 space.