#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; }
发布于 2013-04-07 17:51:56
你从编译器得到的错误就是它所说的。为了使您的应用程序正确,您必须检查scanf的返回值。可能的返回值在man page中进行了描述。
有关错误原因的解释,请参阅gcc manual的"warn_unused_result“部分(在Peter R.s回复中引用)。
发布于 2013-04-07 17:56:06
摘自GCC的文档:
warn_unused_result
属性会导致在具有该属性的函数的调用者不使用其返回值的情况下发出警告。这对于不检查结果的函数非常有用,因为不检查结果要么是安全问题,要么总是错误,比如realloc
。
int fn () __attribute__ ((warn_unused_result));int foo () { if (fn () < 0) return -1;fn ();return 0;}
在第5行产生警告。
https://stackoverflow.com/questions/15861077
复制相似问题