gpt4 book ai didi

c - 微 Controller 的模块化编程

转载 作者:行者123 更新时间:2023-11-30 18:58:54 27 4
gpt4 key购买 nike

我正在开展一个全面的长期 C 编程项目,该项目需要模块化编程方法。作为设计的一部分,将创建库,因此我想确认头文件组织的正确/错误解释:

问题

假设您正在创建一个库。经过深思熟虑,您决定您希望构想的最终库(又名“godzilla”)应由两个绑定(bind)到头文件的单独 C 文件组成。在这个头文件中将存在函数声明;例如:

// offense.c
void attack_city(uint32_t force); // (in Newtons) - capable of a LOT of force!
...

// measure.c
void measure_effect(void);
...

这是您绘制的基本网络图:

diagram

因为 force.cmeasure.c 都包含 godzilla.h,因此所有内容都将从该头文件中引用并包含在编译过程对吗?

编辑

应用:ARM微处理器

最佳答案

您应该熟悉链接的工作原理。

通常,当您编译时,您会创建带有一些未解析引用的目标文件,这些引用将由链接器解析,从而创建二进制文件。其中一些引用可以指向外部库,并且将保持“未解析”状态,并将在运行时解析。

头文件只是为编译器提供了函数的签名(没有提供有关在哪里找到实际实现的信息),因此编译器知道如何将参数传递给函数。如果该函数未在同一模块中定义,则链接器将需要找到它。我不知道您使用的是哪个系统,所以我无法帮助您。

一般来说,在开始编写 C 库之前,您应该很好地理解这些概念,否则您将创建一个蹩脚的库,它会在每个次要版本中更改 ABI,并会因此产生不良后果。

关于c - 微 Controller 的模块化编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14592367/

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