【发布时间】:2011-01-03 19:23:06
【问题描述】:
我想查看我的代码 (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;
}
请注意:
- 即使函数及其使用在不同的文件中,它也应该可以工作
- 免费静态检查工具
【问题讨论】:
-
如果你使用
printf,这会打印很多警告。 -
无法通过命令行执行它的“可能”原因是,如果您有正当理由忽略结果,那么您最终需要分配一个“未使用的变量”会产生警告。例如,您当然不希望
T& operator=(T rhs);强迫您捕获结果;) -
@Matthieu M:当你想忽略一个函数的返回值时,你不需要分配一个虚拟变量。只需将函数调用转换为 void,如
(void) function_returning_a_val();。阅读代码时,这也更清楚地表明您是故意忽略返回值。 -
[[nodiscard]]在 C++17 中。 -
由于这看起来是关于这个主题的最古老和最受好评的问题,我添加了一个涵盖 C++17 的更新答案。
标签: c++ c gcc static-analysis