# ISO C 与 Nerrno 宏
以 fopen() 为例。
原因在于:
IEEE POSIX (IEEE Std 1003) 兼容 ISO C ,但他对 ISO C 中的一些函数做了扩展,这其中就包括 fopen()。
如图:
CX 的注解如下(对 ISO C 的扩展)
除此之外微软也提供这个扩展,我的角度看它为的是兼容代码的可移植性(所有 errno 值与 UNIX 兼容。),毕竟标准 C 和 UNIX 的关系在哪摆着。(微软支持他的相关扩展无关道义)
C11 标准:
ISO C 11(ISO/IEC 9899:201x)第 306 页:
意思是成功返回文件指针,失败返回 NULL 指针;nerrno 只字未提。
于是问题来了,我们到底要不要遵守ISO C?
转载于:https://my.oschina.net/bbi094/blog/700836