我对C中stdint.h的概念有点熟悉.通过明确说明整数的大小,头文件将用该机器上的相应整数替换#define整数.例如,如果我的机器有16位无符号整数,uint32_t
则将替换为long unsigned int
.
但是,假设您的机器仅支持最多32位整数.如果你使用了会发生什么int64_t
?如果本机不支持此整数大小,那么如何解决这个问题,因为没有替代方法可以修复它?
编译器会抛出错误并说它无法解决吗?或者它会尝试使用两个32位分配来保存64位数据类型吗?
如果不支持某个stdint类型,则代码将无法编译.您可以检查它们是否受支持:
#include#ifndef UINT64_MAX #error uint64_t not supported #endif
如果您的编译器支持某种类型但CPU不支持,则意味着将以静默方式调用某些编译器库代码来模拟更大的类型.
例如,如果您uint32_t
在8位微控制器上使用,编译器倾向于支持它,但由于该类型仅通过软件模拟,因此生成的机器代码将变得越来越大.