c - 没有人从不检查 putc、fputc、puts、fputs、putchar(也许还有 printf)函数的返回值。为什么?

标签 c performance error-handling puts putchar

$ cd glibc-2.23
$ grep -ErI --include='*.c' '= *f?put([cs]|char)\>' |wc -l
1
$ grep -ErI --include='*.c' '[^= ] *f?put([cs]|char)\>' |wc -l
1764

$ man putc
...
RETURN VALUE
   fputc(), putc() and putchar() return the character written
   as an unsigned char cast to an int or EOF on error.

也许“不太可能”,例如在一系列 putchar 中,一两个失败而不引人注目,而前一个和后一个成功?
或者,至少 99.9999% 的实现中,它们可能根本没有“返回 suchandsuch”语句?
或者,在每个字节之后进行连续的错误检查(在 putchar、putc、fputc 的情况下)可能会导致太大的性能下降?

最佳答案

忽略函数的返回值是软件中许多难以发现的错误的根源。您关于“没有人”检查返回值的说法是不正确的。高可靠性软件系统会检查返回值。

关于c - 没有人从不检查 putc、fputc、puts、fputs、putchar(也许还有 printf)函数的返回值。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41042850/

相关文章:

c++ - 快速 Arc Cos 算法?

java - 在 java 中捕获 sql 开发人员脚本输出

php - 自定义错误处理程序函数中的error_level和error_message来自何处以及如何出现?

c++ - 是否可以使用三元运算符 "?"来填充 C/C++ 中的数组列表?

python - 计时函数并获取返回值

javascript - 函数包装器在类上的性能基准测试与仅构造函数调用调用和 HaveSameMap 的对比

c# - 如何避免级联错误消息

c - 算法查找 2 个字符串中常见字符的数量

c - 为什么这个 C sizeof 函数在不同的上下文中显示不同的值?

c - 如何使用 Libwebsockets 启用调试日志记录?