我需要一对标准整数类型,有符号和无符号,它们对应于(合理解释)机器字长,并且保证彼此大小相同。
在具有干净地址模型的平台上,intptr_t
并且uintptr_t
符合要求,因此使用这些当然是可能的。
但是,有问题的代码可能需要在各种嵌入式系统上运行。我猜其中一些仍然使用具有 286 样式架构的 CPU,其中最大的有效整数类型小于指针 - 如果不是这样,请纠正我 - 但如果是这样,那么有一个案例要做用于使用较小的整数类型。
那个较小的整数类型可能对应于size_t
和ptrdiff_t
- 但这些类型是否保证彼此大小相同?我确实需要能够在有符号和无符号类型之间来回转换而不会丢失。
还有什么我应该考虑的吗?