警告:忽略'write'的返回值,使用属性warn_unused_result [-Wunused-result]声明

时间:2018-02-08 14:01:43

标签: c

在C中编译我的程序时出现此错误。

  

警告:忽略'write'的返回值,使用属性warn_unused_result声明[-Wunused-result]

我打电话给你。

FLAGS : -g -Wall -Werror -Wextra -g -O2 // or -Ofast (same result)
  

GCC版本:5.4

当我尝试使用-O2或-Ofast进行编译时,会发生这种情况。

有人能解释我,为什么那不起作用?

谢谢:)

1 个答案:

答案 0 :(得分:4)

嗯,它正在“正常工作”,但编译器认为你遗漏了一些东西,因为你忽略了返回值,所以它会给你一个警告。虽然您使用的是-Werror,但它不会出现错误,因此会将警告视为错误并失败。

有两种解决方案:

  1. 添加检查返回值的代码,并处理任何错误; OR
  2. 将调用转发给(void),从而明确说“这个返回值在这里,但我没有使用它”。
  3. 由于I / O很脆弱并且可能会失败,因此第一种通常是最好的方法。