返回值的歧义

时间:2018-08-16 05:59:54

标签: c

在C语言书籍(由K&R撰写)中,在低级I / O 的部分中,我遇到了两个功能read()close()整数返回类型。但是我已经看到,甚至不关心将返回值分配给任何整数变量而使用它们。但是,当我创建具有整数返回类型的用户定义函数并在未将其分配给整数变量的情况下使用它时,会引起编译器警告。为什么会有这种不一致?

1 个答案:

答案 0 :(得分:1)

编译器传统上不会警告忽略库函数调用的结果。诸如printfscanfmemcpy之类的函数确实会返回某些内容,但是回到K&R的黑暗时代的某个人却决定隐式跳过对函数结果的检查。它成为事实上的标准。尽管到目前为止,在许多情况下(例如scanf),跳过结果仍然是不好的做法。

但是,如果您不检查应用程序功能的结果,编译器会发出警告,因为这几乎总是一个错误。如果您故意不想检查结果,则应写(void) func();来使此类警告消失。


(注意:readclose不是标准C,而是Unix API。它们仍然是库函数。)