0

FlexeLint/PC-lint警告 std::string::append 的返回值在以下简化示例代码中不被考虑:

#include <iostream>
#include <string>

int main() {

std::string s("Hell");
s.append(1,'o');

std::cout << s << std::endl;
return 0;

调用 FlexeLint 会给出以下警告:

Warning 534: Ignoring return value of function  'std::basic_string<char>::append(unsigned long, char)'

虽然该消息为真,但在这种情况下捕获返回值是没有意义的,因为std::string::append只是返回 *this。

此外,与该对象相关的任何迭代器、指针和引用都可能无效。但事实并非如此,没有使用迭代器、指针和引用。

问题

我是否错过了重要的事情,或者这仅仅是 FlexeLint 的误报?

4

1 回答 1

1

PC-Lint 非常灵活,大多数时候可以根据您的需要对其进行调整。有几种方法可以禁用此警告:

  • 使用全局选项-e534(涵盖所有功能)
  • 使用全局选项-esym(534,std::basic_string<char>::append(unsigned long, char))
  • //lint !e534在同一行添加注释
于 2016-05-19T19:14:27.673 回答