我对 C 中 stdint.h 的概念有些熟悉。通过明确说明整数的大小,头文件将用该机器上的适当整数替换 #define 整数。例如,如果我的机器有 16 位无符号整数,uint32_t
将替换为 long unsigned int
。
但是,假设您的机器最多只支持 32 位整数。如果您使用 int64_t
会发生什么?如果 native 不支持此整数大小,那么如何解决这个问题,因为没有可以修复它的替代方法?
编译器会抛出错误提示无法解析吗?或者它会尝试使用两个 32 位分配来保存 64 位数据类型吗?
最佳答案
如果不支持某种 stdint 类型,代码将无法编译。您可以像这样检查它们是否受支持:
#include <stdint.h>
#ifndef UINT64_MAX
#error uint64_t not supported
#endif
如果您的编译器支持一种类型但您的 CPU 不支持,这意味着一些编译器库代码将被静默调用以模拟更大的类型。
例如,如果您在 8 位微 Controller 上使用 uint32_t
,编译器往往会支持它,但由于该类型仅通过软件模拟,因此生成的机器代码会变得又大又慢。
关于c - 你如何确定你的机器是否支持 C 中的标准整数数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41617433/