gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:36:32 25 4
gpt4 key购买 nike

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

我的 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);
}

关于g++ - 忽略使用属性 warn_unused_result [-Wunused-result] 声明的 ‘int scanf(const char*, ...)’ 的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17275116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com