【问题标题】:cppcheck throws warning on const std::string[]cppcheck 在 const std::string[] 上抛出警告
【发布时间】:2019-04-05 13:27:48
【问题描述】:

我正在努力处理cppcheck(Linux 机器上的 1.85 版)正在报告的警告:

someFile.h:23:29:警告:冗余代码:找到以字符串常量开头的语句。 [常量语句]
const std::string OffOn[]= {"off", "on"};
^

我做了一些研究,发现将语句更改为

const std::string OffOn[]= {std::string("off"), std::string("on")};

删除警告。但是我不明白发生了什么,以及我的第一个解决方案有什么“坏处”。也许有人可以向我解释一下?或者给我一些提示!

【问题讨论】:

  • 也许它建议你使用 initializer_list 像:const std::string OffOn[]{"off", "on"};,所以= 是不必要的。
  • @DenisSablukov 就是这样!现在这对我来说非常有意义。非常感谢!
  • 我实际上会向 cppcheck 提交问题报告。产生的警告信息真的没有帮助。

标签: c++ cppcheck


【解决方案1】:

建议您使用 braced-init-list 进行初始化,例如:const std::string OffOn[]{"off", "on"};,所以 = 是不必要的。

【讨论】:

  • 这可能是吹毛求疵,但在这种情况下,{...} 不是std::initializer_list。这是braced-init-list
  • 这显然是一个错误;这里没有“冗余代码”
猜你喜欢
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 2010-09-13
  • 2014-04-26
相关资源
最近更新 更多