解决方法
如果您认为您的C程序将被翻译成汇编语言(例如x86程序集),则读取函数的返回值只需读取存储在cpu的“eax”寄存器中的值.
历史上编写的C编程语言是一种易于在非常有限的(对于今天的标准)PDP-11计算机上进行解析和编译的语言.
早期的C编译器(好吧,其中一些)接受声明的函数没有返回类型而没有返回,如下所示:
myFunc(int *x) { *x = *x + *x; }
这是早期C编译器将其解释为的函数
int myFunc(int *x) { *x = *x + *x; return 0; }
因此,您的问题的答案可能是“因为遗留代码”.
但是,应该或必须检查返回值的情况.
MISRA C指南第16.10条规定:
“如果函数返回错误信息,则应测试该错误信息”.
因此,如果您需要确保printf()已打印某些内容,如果您使用返回值作为“错误信息”,则必须遵循MISRA准则,您必须检查该值.