# ISO C 与 Nerrno 宏

以 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