在C中编译我的程序时出现此错误。
警告:忽略'write'的返回值,使用属性warn_unused_result声明[-Wunused-result]
我打电话给你。
FLAGS : -g -Wall -Werror -Wextra -g -O2 // or -Ofast (same result)
GCC版本:5.4
当我尝试使用-O2或-Ofast进行编译时,会发生这种情况。
有人能解释我,为什么那不起作用?
谢谢:)
答案 0 :(得分:4)
嗯,它正在“正常工作”,但编译器认为你遗漏了一些东西,因为你忽略了返回值,所以它会给你一个警告。虽然您使用的是-Werror
,但它不会出现错误,因此会将警告视为错误并失败。
有两种解决方案:
(void)
,从而明确说“这个返回值在这里,但我没有使用它”。由于I / O很脆弱并且可能会失败,因此第一种通常是最好的方法。