忽略使用属性 warn_unused_result [-Wunused-result] 声明的“int scanf(const char*, ...)”的返回值?

2023-11-23

当我编译如下程序时:g++ -O2 -s -static 2.cpp它给了我警告ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result].
但是当我删除-02从复制语句中没有显示警告。

My 2.cpp程序:

#include<stdio.h>
int main()
{
   int a,b;
   scanf("%d%d",&a,&b);
   printf("%d\n",a+b);
   return 0;
}


此警告的含义是什么?-O2 ??


这意味着您不检查 scanf 的返回值。

它很可能返回 1(仅设置了 a)或 0(a 和 b 均未设置)。

在未经优化的情况下编译时不显示它的原因是,除非启用优化,否则不会完成查看这一点所需的分析。 -O2 启用优化 -http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html.

如果没有收到两个数字,只需检查返回值即可消除警告并使程序以可预测的方式运行:

if( scanf( "%d%d", &a, &b ) != 2 ) 
{
   // do something, like..
   fprintf( stderr, "Expected at least two numbers as input\n");
   exit(1);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

忽略使用属性 warn_unused_result [-Wunused-result] 声明的“int scanf(const char*, ...)”的返回值? 的相关文章

随机推荐