g ++如何在忽略函数返回值时获得警告 [英] g++ How to get warning on ignoring function return value

查看:40
本文介绍了g ++如何在忽略函数返回值时获得警告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

lint 会产生一些警告,例如:

lint produces some warning like:

foo.c XXX Warning 534: Ignoring return value of function bar()

来自 lint 手册

534 忽略函数的返回值

534 Ignoring return value of function

'符号'(与位置比较)A返回值的函数是只是为了副作用,因为例如,在单独的陈述中或逗号的左侧操作员.尝试:(无效)函数();到调用一个函数并忽略它的返回价值.另见 fvr、fvo 和 fdr§5.5标志选项"中的标志.

'Symbol' (compare with Location) A function that returns a value is called just for side effects as, for example, in a statement by itself or the left-hand side of a comma operator. Try: (void) function(); to call a function and ignore its return value. See also the fvr, fvo and fdr flags in §5.5 "Flag Options".

我想在编译期间收到此警告(如果存在).gcc/g++ 中是否有任何选项可以实现这一点?我打开了 -Wall 但显然没有检测到这一点.

I want to get this warning, if there exists any, during compilation. Is there any option in gcc/g++ to achieve this? I had turned on -Wall but that apparently did not detect this.

推荐答案

感谢 WhirlWindpaxdiablo 以获得答案和评论.这是我尝试将这些部分组合成一个完整的(?)答案.

Thanks to WhirlWind and paxdiablo for the answer and comment. Here is my attempt to put the pieces together into a complete (?) answer.

-Wunused-result 相关的 gcc 选项.默认开启.引用 gcc 警告选项页面:

-Wunused-result is the relevant gcc option. And it is turned on by default. Quoting from gcc warning options page:

-Wno-unused-result

如果函数的调用者标有 warn_unused_result 属性(请参阅变量属性) 不使用它的返回值.默认是 -Wunused-result

Do not warn if a caller of a function marked with attribute warn_unused_result (see Variable Attributes) does not use its return value. The default is -Wunused-result

因此,解决方案是在函数上应用 warn_unused_result 属性.

So, the solution is to apply the warn_unused_result attribute on the function.

这是一个完整的例子.文件未使用的结果.c 的内容

Here is a full example. The contents of the file unused_result.c

int foo() { return 3; }

int bar() __attribute__((warn_unused_result));
int bar() { return 5; }

int main()
{
    foo();
    bar();    /* line 9 */
    return 0;
}

及对应的编译结果:

$gcc unused_result.c 
unused_result.c: In function ‘main’:
unused_result.c:9: warning: ignoring return value of ‘bar’, declared with attribute warn_unused_result

再次注意,没有必要使用 -Wunused-result,因为它是默认设置.人们可能很想明确提及它以传达意图.虽然这是一个崇高的意图,但在分析情况后,我的选择却是反对.因为,在编译选项中使用 -Wunused-result 可能会产生一种错误的安全感/满足感,除非代码库中的 all 函数符合以下条件,否则这是不正确的warn_unused_result.

Note again that it is not necessary to have -Wunused-result since it is default. One may be tempted to explicitly mention it to communicate the intent. Though that is a noble intent, but after analyzing the situation, my choice, however, would be against that. Because, having -Wunused-result in the compile options may generate a false sense of security/satisfaction which is not true unless the all the functions in the code base are qualified with warn_unused_result.

这篇关于g ++如何在忽略函数返回值时获得警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆