c – stdio是否总是设置errno?
当stdio流遇到错误(但不是EOF)时,流的错误指示器将被设置为使得ferror()将返回非零值.我一直假设在errno中有更多的信息可用.但是我怎么知道这个?
一些功能的文档[例如在Linux下的man fopen]说,errno也将被设置.然而,人类fgets根本没有提到errno. glibc信息页面令人放心:
但我不知道这个保证是多么强大. C标准是否需要?在Visual C/C++中会发生什么? 解决方法
C标准本身不需要很多使用errno WRT到stdio函数;它指定ferror(),但只说明它
从C99草案:http://www.vmunix.com/~gabor/c/draft.html.任何实际的错误代码,大部分是实现定义. 但是,linux上的GNU C库也符合POSIX规范: http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm 在这种情况下,这些定义更加明确.例如,如果您查看fopen的页面: http://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html 您会在错误之下看到很多详细的信息,包括特定的错误代码. 同样,在几乎所有正常的linux系统上使用的GNU C库都符合POSIX标准,因此您可以依赖该信息;).那些(在线)POSIX手册页也通常比标准linux系统手册页更详细(同时阅读两者). WRT在其他(非POSIX)平台上进行文件操作,它们将具有自己的实现.不幸的是,这样的东西在标准C中不是透明的便携式的.但是,C流确实有更多的标准化错误处理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |