我想查看我的代码(C++)中忽略函数返回值的所有位置。我怎样才能做到这一点 - 使用 gcc 或静态代码分析工具?
错误代码示例:
int f(int z) {
return z + (z*2) + z/3 + z*z + 23;
}
int main()
{
int i = 7;
f(i); ///// <<----- here I disregard the return value
return 1;
}
请注意:
- 即使函数及其使用位于不同的文件中,它也应该可以工作
-
free静态检查工具
你想要海湾合作委员会的warn_unused_result
属性:
#define WARN_UNUSED __attribute__((warn_unused_result))
int WARN_UNUSED f(int z) {
return z + (z*2) + z/3 + z*z + 23;
}
int main()
{
int i = 7;
f(i); ///// <<----- here i disregard the return value
return 1;
}
尝试编译此代码会产生:
$ gcc test.c
test.c: In function `main':
test.c:16: warning: ignoring return value of `f', declared with
attribute warn_unused_result
您可以在中看到它的使用Linux内核;他们有个__must_check
做同样事情的宏;看起来你需要 GCC 3.4 或更高版本才能工作。然后你会发现内核头文件中使用了该宏:
unsigned long __must_check copy_to_user(void __user *to,
const void *from, unsigned long n);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)