c - stdint.h 和 C99

标签 c c99 standard-library openvms stdint

我在 C99 standard 中读到stdint.h 是 C 标准库的一部分。

我没看错吗,如果我测试 C99 合规性,使用:

defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)

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

恰当的例子:我可以考虑假装符合 C99 但不提供 stdint.h 的环境与其自身的合规性声明不一致,因此 buggy ?

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

最佳答案

是的。

顺便说一句, undefined symbol 扩展为 0在预处理器表达式中,所以你可以这样写:

#if __STDC_VERSION__ >= 199901L

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

关于c - stdint.h 和 C99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37107259/

相关文章:

c - 在 C 中取消引用

arrays - 在 Swift 中删除数组中的重复元素

c - 为什么 scanf() 无法过滤双引号,尽管将格式设置为 [A-Za-z]

C代码多线程Pthread

c - 我的编译器如何找到 stat(文件状态)函数?

CPP 在 Mac 上未能通过健全性检查

scala - `contains[BB >: B](e: BB): Boolean` 而不是 `contains(e: Any): Boolean` 的好处

c - ubuntu树命令模拟打开文件过多

C 编译器和 C99 标准

c - 如何在c99标准下将x获取到C中的pow y