检查是否定义了uint64_t

7

uint64_t 类型在32位平台上没有被定义的保障,而像下面这样的代码:

int main() {
  uint64_t i = 0;
}

可能会导致编译错误,类型为不完整类型

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


1
考虑适当添加C或C++标签以获得更多关注。 - Grzegorz Szpetkowski
1个回答

10

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

#include <cstdint> /* don't forget to include */

...

#ifdef UINT64_MAX
    ...
#endif

据我所知,你无法直接检查某个类型别名是否已定义。根据C99标准的第7.18.2节“指定宽度整数类型的限制”(我没有C++标准的副本来确认,重点是我的):
以下对象宏指定了在中声明的类型的最小值和最大值。每个宏名称对应于7.18.1中类似的类型名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接