加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

ARM cortex-M3 uint_fast32_t vs uint32_t

发布时间:2020-12-14 01:52:58 所属栏目:Windows 来源:网络整理
导读:我正在为STM32Fx cortex-M3系列处理器开发一个程序.在stdint.h中定义了以下内容: typedef unsigned int uint_fast32_t;typedef uint32_t uint_least32_t;typedef unsigned long uint32_t; 据我了解. [u]int_fast[n]_t will give you the fastest data type
我正在为STM32Fx cortex-M3系列处理器开发一个程序.在stdint.h中定义了以下内容:

typedef unsigned int uint_fast32_t;
typedef uint32_t  uint_least32_t;
typedef unsigned long uint32_t;

据我了解.

[u]int_fast[n]_t will give you the fastest data type of at least n bits.
[u]int_least[n]_t will give you the smallest data type of at least n bits.
[u]int[n]_t will give you the data type of exactly n bits.

据我所知sizeof(unsigned int)< = sizeof(unsigned long)和UINT_MAX< = ULONG_MAX - 总是如此. 因此,我希望uint_fast32_t是一个大小等于或大于uint32_t大小的数据类型. 在cortex-M3 sizeof(unsigned int)== sizeof(unsigned long)== 4的情况下.因此上述定义在大小方面是“正确的”. 但是为什么它们的定义方式与基础数据类型的名称和逻辑大小不一致,即

typedef unsigned long uint_fast32_t;
typedef unsigned int  uint_least32_t;
typedef uint_fast32_t uint32_t;

有人可以澄清基础类型的选择吗?

鉴于’long’和’int’的大小相同,为什么不对所有三个定义使用相同的数据类型?

typedef unsigned int uint_fast32_t;
typedef unsigned int uint_least32_t;
typedef unsigned int uint32_t;

解决方法

情况是,只保证

sizeof(long) >= sizeof(int)

并且不能保证它实际上已经存在了.在很多系统上,int通常都很长.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读