检查是否定义了uint64_t

Nic*_*mer 5 c++ types preprocessor-directive

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

int main() {
  uint64_t i = 0;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Grz*_*ski 8

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

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

...

#ifdef UINT64_MAX
    ...
#endif
Run Code Online (Sandbox Code Playgroud)

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

以下类似对象的宏指定类型的最低和最高限额宣布<stdint.h>.每个宏名称对应于7.18.1中的类似类型名称.