FlexeLint / PC-lint警告不会考虑std :: string :: append的返回值

时间:2016-05-19 09:22:48

标签: c++ stdstring pc-lint

FlexeLint/PC-lint警告说,在减少sample code之后不会考虑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的误报?

1 个答案:

答案 0 :(得分:1)

PC-Lint非常灵活,大部分时间都可以根据您的需要进行调整。有几种方法可以禁用此警告:

  • 使用全局选项-e534(涵盖所有功能)
  • 使用全局选项-esym(534,std::basic_string<char>::append(unsigned long, char))
  • 在同一行添加评论//lint !e534