检查是否定义了uint64_t

时间:2014-07-12 10:38:27

标签: c++ types preprocessor-directive

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

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

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

是否有预处理程序指令来检查uint64_t是否存在?用于检查类型是否已定义的任何其他方式?

1 个答案:

答案 0 :(得分:8)

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

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

...

#ifdef UINT64_MAX
    ...
#endif

AFAIK如果定义了某种类型的同义词,您无法直接检查。根据C99,7.18.2指定宽度整数类型的限制(不要有C ++标准的副本来确认,强调我的):

  

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