gpt4 book ai didi

c - avr-gcc 库中 typedef int16_t int_fast16_t 的用途

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:51 25 4
gpt4 key购买 nike

我现在正在浏览“Arduino\hardware\tools\avr\avr\include”文件夹中的 avr 库。在 stdint.h 文件中有一段代码:

typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__)));
typedef signed int int32_t __attribute__ ((__mode__ (__SI__)));

typedef uint16_t uint_fast16_t;

/** \ingroup avr_stdint
fastest signed int with at least 32 bits. */

typedef int32_t int_fast32_t;

所以基本上 int32_tint_fast32_tsigned int __attribute__ ((__mode__ (__SI__))) 是同一件事。有人可以证实吗?

如果是,为什么要这样做?为什么不直接使用 int32_t?

最佳答案

我理解这个问题是“为什么 stdint.h 声明名称为 int_leastN_tint_fastN_t 的类型以及 intN_t 我希望它声明?"

简单的答案是,C 标准(自 1999 年修订以来)要求 stdint.h 声明这些类型,因为委员会认为它们很有用。碰巧的是,他们错了。几乎没有人想要 stdint.h 中的任何东西 ,但 精确宽度类型。但是,一旦包含任何内容,就很少会从 C 标准中删除,因为这会破坏正在使用它们的程序。所以 stdint.h 可能会永远继续声明这些类型。

(关于 为什么 非精确宽度类型在 C 语言中用处不大,我可以继续详细说明,但您可能不在乎。)

关于c - avr-gcc 库中 typedef int16_t int_fast16_t 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35418905/

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