智能typedef

Ada*_*vis 8 c performance types typedef

我总是在嵌入式编程中使用typedef来避免常见错误:

int8_t- 8位有符号整数
int16_t- 16位有符号整数
int32_t- 32位有符号整数
uint8_t- 8位无符号整数
uint16_t- 16位无符号整数
uint32_t- 32位无符号整数

最近的嵌入式缪斯(问题177,尚未在网站上)向我介绍了这样一个想法:拥有一些特定于性能的typedef是有用的. 此标准建议使用typedef表示您需要具有最小大小的最快类型.

例如,可以使用声明变量int_fast16_t,但它实际上将实现为int32_t32位处理器或int64_t64位处理器,因为这些将是这些平台上至少16位的最快类型.在8位处理器上,它将int16_t满足最小尺寸要求.

在我想知道之前从未见过这种用法

  • 您是否在任何嵌入式或其他项目中看到过这种情况?
  • 在typedef中避免这种优化的任何可能的原因?

jal*_*alf 4

例如,可以使用 int_fast16_t 声明一个变量,但实际上它会在 32 位处理器上实现为 int32_t,或者在 64 位处理器上实现为 int64_t,因为这些是这些平台上至少 16 位的最快类型

这就是 int 的用途,不是吗?您是否可能很快就会遇到 8 位 CPU,但这还不够?

您能记住多少种独特的数据类型多少种独特的数据类型?

它是否提供了如此多的额外好处,以至于值得在我创建简单整数变量时有效地将要考虑的类型数量加倍?

我什至很难想象它可能被持续使用的可能性。

有人会编写一个返回 a 的函数int16fast_t,然后其他人会将该变量存储到int16_t

这意味着在快速变体实际上有益的模糊情况下,它可能会改变代码的行为。它甚至可能导致编译器错误或警告。