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的误报?
答案 0 :(得分:1)
PC-Lint非常灵活,大部分时间都可以根据您的需要进行调整。有几种方法可以禁用此警告:
-e534
(涵盖所有功能)-esym(534,std::basic_string<char>::append(unsigned long, char))
//lint !e534