FlexeLint/PC-lint предупреждает о том, что возвращаемое значение std::string::append не рассматривается
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?
1 ответ
PC-Lint достаточно гибок, и в большинстве случаев его можно настроить в соответствии с вашими потребностями. Есть несколько способов отключить это предупреждение:
- Использование глобальной опции
-e534
(охватывает все функции) - Использование глобальной опции
-esym(534,std::basic_string<char>::append(unsigned long, char))
- Добавление комментария
//lint !e534
на одной линии