【发布时间】:2026-02-09 13:15:02
【问题描述】:
我正在用 C 语言为特定的微控制器编写我的第一个裸机应用程序。我想让它尽可能地便携,但我不确定使用 C 类型的正确方法是什么。我有两个选择:
- 使用典型的 C 标准类型,例如
char、int、long等。 - 对整数类型使用
stdint.h的类型,例如uint8_t、int32_t等,其余类型使用char和double。
哪个选项最好?
【问题讨论】:
-
第三个选项是什么?
-
如果您想编写可移植代码(或任何 C 代码),请确保您了解 C 的错误功能,即 通常的算术转换 及其 整数推广 规则。它们与类型本身一样重要。
-
stdint.h 简单地转换为原生/实际 C 类型 char int long。在针对特定目标的工具中,这种变化很少见。但是如果移植到另一个平台(如果你的代码无论如何都不会移植的话),stdint 方法很好。 stdint 方法有一个 C 库的问题,它有点不适用于裸机,并且取决于工具可以是 PITA(还有 C 库如何确保它与该编译器一起使用的问题(有时它不适用))。
标签: c types embedded bare-metal hardware-programming