#include <stdio.h>
#include <stdlib.h>
你好,我想知道为什么这个程序没有执行。似乎我总是在正确执行scanf功能时遇到麻烦。我得到错误:
错误:忽略使用属性warn_unused_result声明的scanf的返回值
注意:我知道有一种更有效的方法来编写我当前的程序,但这是不重要的。我想知道这个错误意味着什么,以及为什么我一直得到它并可能是一个解决方案。感谢你们。这是代码:
int main (int argc, char *argv[]){
int x;
int y;
int z;
int temp;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &z);
if (x > y) {
temp = x;
x = y;
y = temp;
}
if (y > z) {
temp = y;
y = z;
z = temp;
}
if (x > z) {
temp = x;
x = z;
z = temp;
}
printf("%d", x);
printf("%d", y);
printf("%d", z);
return EXIT_SUCCESS; }
答案 0 :(得分:2)
您从编译器获得的错误就是它所说的。为了使您的应用程序正确,您必须检查scanf的返回值。可能的返回值在man page。
中描述有关导致错误的原因的解释,请参阅gcc manual的“warn_unused_result”部分(引自Peter R.s回复)。
答案 1 :(得分:2)
来自GCC文件:
warn_unused_result
属性会导致发出警告 如果具有此属性的函数的调用者不使用它 回报价值。这对于不检查的函数很有用 结果是安全问题或总是一个bug,例如realloc
。int fn () __attribute__ ((warn_unused_result)); int foo () { if (fn () < 0) return -1; fn (); return 0; }
在第5行发出警告。