3
C库函数的原理从不将errno设置为零
C标准要求不得将C标准库功能设置errno为零。为什么会这样呢? 我可以理解它对于调用多个函数以及仅errno在最后一个函数之后进行检查很有用-例如: errno = 0; double x = strtod(str1, NULL); long y = strtol(str2, NULL); if (errno) // either "strtod" or "strtol" failed else // both succeeded 但是,这不是“坏习惯”吗?由于只errno在最后进行检查,因此您只知道其中一个功能确实失败了,但哪个功能失败了。仅仅是知道某些失败对于大多数实际程序而言已经足够好了吗? 我尝试查找各种C Rational文档,但是其中许多文档没有太多详细信息<errno.h>。