【发布时间】:2020-10-14 14:27:37
【问题描述】:
我正在阅读 C 中的固定大小数据类型 - (u)intN_t。
而且我明白,使用这些数据类型可以确保程序员准确地保证该数据类型的位数。
我很想知道这是如何在内部执行的,经过一番研究后我了解到,通过头文件,它们将被定义为 -
typedef char int8_t;
typedef short int16_t;
我知道这些 typedef 是在 <stdint.h> 中定义的,基于 data model 类型,后面跟着 平台。即是否-
- ILP32 或
- LP64 或
- ILP64 或
- LL64 等
因此,如果平台遵循 ILP32 数据模型,那么 int64_t 将被定义为 -
typedef long long int64_t;
如果平台遵循 LP64 数据模型,那么 int64_t 将被定义为 -
typedef long int64_t;
但我无法理解的是这里的平台是什么?
平台是否指硬件架构类型 - x86、x86_64 或 AMD 等
或者它是指一个操作系统,比如 Solaris、AIX、HP-UX、Linux、macOS、BSD 或 IBM z/OS 等
data model 类型是由操作系统还是由硬件架构决定的?
【问题讨论】:
标签: c types compiler-construction