检查是否定义了uint64_t

check if uint64_t is defined

本文关键字:uint64 是否 定义 检查      更新时间:2023-10-16

类型uint64_t不能保证在32位平台上定义,像

这样的代码
int main() {
  uint64_t i = 0;
}

可能导致incomplete type类型的编译错误。

是否有预处理器指令来检查uint64_t是否存在?还有其他检查类型是否定义的方法吗?

我认为合理的方法是检查是否定义了相关的宏UINT64_MAX,例如

#include <cstdint> /* don't forget to include */
...
#ifdef UINT64_MAX
    ...
#endif

我想您不能直接检查是否定义了某些类型同义词。根据C99, 7.18.2指定宽度整数类型的限制(没有c++标准的副本来确认,强调我的):

下列类对象宏指定最小值和最大值<stdint.h>中声明的类型的限制。每个宏名称对应于7.18.1中类似的类型名。