检查 unsigned long long 是否可用

urz*_*eit 5 c unsigned-long-long-int c-preprocessor

如何通过预处理器指令检查该类型unsigned long long在当前构建环境中是否可用?

我尝试检查

#if __STDC_VERSION__ >= 199901L
    /* Available */
#else
    /* Not available */
#endif
Run Code Online (Sandbox Code Playgroud)

但是用 gcc 编译并且至少没有-std=-compiler 参数这会导致“不可用”(但可以工作)。

是否有更好的宏来检查,以便至少它可以与 C99 标准编译器一起工作,并且可以在没有 的情况下与 GCC 一起工作-std=C99

Cod*_*ray 3

尽管这不是最优雅的解决方案,但我的第一反应是检查标头ULLONG_MAX中是否存在该符号limits.h

\n\n

如果已定义,则该unsigned long long int类型几乎肯定可用。如果未定义,则该类型可能不可用\xe2\x80\x94,或者至少,它没有得到很好的支持,并且可能只能作为不可移植的编译器扩展使用。

\n