stdint.h和C99

Cya*_*yan 1 c c99 standard-library openvms stdint

我读了C99标准,它stdint.h是C标准库的一部分.

我是否正确阅读,如果我测试符合C99,请使用:

defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
Run Code Online (Sandbox Code Playgroud)

这意味着stdint.h应该可用吗?

一个C99很好的例子:我可以考虑一个假装符合要求但不提供stdint.h与自己的合规声明不一致的环境,因此有错误吗?

编辑:对于好奇的系统,有问题的系统是带有HP C编译器的OpenVMS(不是gcc,在openVMS上提供stdint.h).因此,根据到目前为止收到的答案和评论,我必须将此实现(假装为C99)视为错误.有关详情,请访问:https://groups.google.com/forum/#!topic/comp.os.vms/Bnh3tIOc7bo%5B101-125%5D

Kei*_*son 5

是.

顺便说一句,未定义的符号扩展到0预处理器表达式,所以你可以写:

#if __STDC_VERSION__ >= 199901L
Run Code Online (Sandbox Code Playgroud)

另一方面,声称符合C99(或C11)的实现可能仍然支持<stdint.h>作为扩展.