以 fopen() 为例。

原因在于:

IEEE POSIX (IEEE Std 1003) 兼容 ISO C ,但他对 ISO C 中的一些函数做了扩展,这其中就包括 fopen()。

如图:

# ISO C 与 Nerrno 宏

# ISO C 与 Nerrno 宏

CX 的注解如下(对 ISO C 的扩展)

# ISO C 与 Nerrno 宏

除此之外微软也提供这个扩展,我的角度看它为的是兼容代码的可移植性(所有 errno 值与 UNIX 兼容。),毕竟标准 C 和 UNIX 的关系在哪摆着。(微软支持他的相关扩展无关道义)

C11 标准:

ISO C 11(ISO/IEC 9899:201x)第 306 页:

# ISO C 与 Nerrno 宏

意思是成功返回文件指针,失败返回 NULL 指针;nerrno 只字未提。

于是问题来了,我们到底要不要遵守ISO C?

转载于:https://my.oschina.net/bbi094/blog/700836

相关文章:

  • 2021-07-23
  • 2022-12-23
  • 2022-01-15
  • 2022-12-23
  • 2021-09-10
  • 2021-08-12
  • 2021-05-19
猜你喜欢
  • 2021-07-20
  • 2022-12-23
  • 2021-12-24
  • 2021-12-20
  • 2021-12-31
  • 2021-04-24
相关资源
相似解决方案