首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与GCC一起使warn_unused_result应用于所有功能

与GCC一起使warn_unused_result应用于所有功能
EN

Stack Overflow用户
提问于 2012-11-11 18:55:20
回答 4查看 2K关注 0票数 10

即使没有相应的属性,也可以告诉GCC对所有函数使用warn_unused_result标志吗?因为如果我忘记检查返回值,我也可以忘记添加GCC的特定属性。

我已经看到其他编译器也能做到这一点。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-11 19:08:27

不,您只能告诉gcc忽略使用warn_unused_result的所有-Wno-unused-result标志,但是相应的-Wunused-result只设置默认值(仅对标志发出警告)。使用-Wall -Wextra -pedantic编译应该触发一个警告,如果它可以被激活,但它没有,所以它不能。

除此之外,我想知道为什么您会想要这样做,忽略函数的结果并不少见,所有的库都可能产生大量的警告。

票数 3
EN

Stack Overflow用户

发布于 2017-07-19 20:59:22

虽然GCC似乎不可能,但您可以运行静态分析器,如coverity和lint来捕捉这些。

票数 0
EN

Stack Overflow用户

发布于 2017-09-12 14:28:04

精灵-clang-插件中有一个clang插件(由我自己编写,开源),它很有帮助。

虽然对GCC来说不是,但它仍然是有用的,例如,如果您可以将它添加到您的CI数据维护过程中(如果您有一个),或者只是偶尔手动运行它。

warn_unused_result插件将对缺少warn_unused_result属性的函数发出警告。插件只考虑在当前编译单元中声明或定义的函数,因此外部库不会添加噪音。

插件只接受一个可选的arg --静态的--这使得它只对静态函数发出警告(因为当更改外部API的工作太多时)。

示例:

代码语言:javascript
复制
int foo(void);

编译器输出:

代码语言:javascript
复制
/tmp/test.c:1:5: warning: missing attribute warn_unused_result
int foo(void);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13334324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档