1
53
你想要GCC的
尝试编译此代码会产生:
您可以在
Linux kernel
他们有一个
|
2
10
据我所知,没有GCC的选择来给出这个警告。但是,如果您对特定的函数感兴趣,可以用属性标记它们:
如果不使用fn()的返回值,则会发出警告。警告:我自己从未使用过这个功能。 |
3
10
您可以在运行时使用这个方便的模板来完成这项工作。 不是返回错误代码(例如,hresult),而是返回一个返回代码<hresult>,它断言如果它超出范围而没有读取值。它不是一个静态分析工具,但也同样有用。
|
4
7
对于C++ 17,这个问题的答案改变了,因为我们现在有 [[nodiscard]] 属性。覆盖在 [dcl.attr.nodiscard] :
和
所以修改你的例子( see it live ):
我们现在获得了GCC和Clang的诊断,例如
|
5
4
任何静态分析代码(例如 PC-Lint )应该能告诉你。对于pc lint,我知道情况就是这样。 |
6
4
静态分析器将为您完成这项工作,但是如果您的代码库更为琐碎,那么就准备好被淹没;-) |
7
4
静态分析器将是您的最佳选择。我们在这里使用隐蔽,但有 free tools 也可以使用。 如果您需要一个快速而肮脏的解决方案,并且手头上有一个Linux风格的shell,您可以尝试以下方法:
它将查找引用指定函数但不包含“=”的每一行。你可以得到很多误报(可能还有一些误报),但是如果你没有一个静态分析仪,这是一个不错的开始。 |
8
2
经典的“lint”程序过去对于返回被忽略值的函数非常易懂。问题是,这些警告中的许多都是不需要的——导致棉绒输出噪音过大(它收集了一些您希望忽略的绒毛)。这可能就是GCC没有标准警告的原因。 另一个问题是,“当你知道你忽略了结果,但实际上并不关心时,你如何抑制警告?”典型的情况是:
你关心的第一个结果来自
这分配给
|
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |