CppCheck:变量“bla”未赋值

Posted

技术标签:

【中文标题】CppCheck:变量“bla”未赋值【英文标题】:CppCheck: Variable 'bla' is not assigned a value 【发布时间】:2011-03-16 06:58:31 【问题描述】:

在我的代码库上运行 CppCheck 会产生一些样式警告。例如。在

void foo(int& x)

  x = 0; 

void bar()

  int y;
  foo(y);

它给了我

Variable 'y' is not assigned a value

类似的代码也一样

 char buffer[160];
 i+=sprintf(buffer,"%2.2ld.",ymd.monthday);

这是我的代码有问题还是 CppCheck 有问题? (如何)我应该修复它?

感谢您的任何想法!

【问题讨论】:

【参考方案1】:

这是 CppCheck 中的 bug,好消息是它已经修复了!

您可以获取latest code 并构建您自己的版本,或者等待 v1.48 发布。 1.48版本计划于4月9日发布the wiki。

【讨论】:

【参考方案2】:

这是CppCheck的问题。您的代码很好(至少是给定的)。

【讨论】:

【参考方案3】:

您正在使用变量 y 作为“输出”参数,但 CppCheck 无法确定这一点。最好在定义时用int y = 0; 初始化y,这样以后如果有人尝试在foo 中使用参数x,他们就不会得到未初始化的值。

【讨论】:

以上是关于CppCheck:变量“bla”未赋值的主要内容,如果未能解决你的问题,请参考以下文章

为啥 cppcheck 工具找不到未初始化的变量?

cppcheck警告:变量未在带有初始化初始化的构造函数中实例化

如何告诉 cppcheck 忽略某些错误?

Cppcheck 停止检查未使用的StructMember

CppCheck 未检测到内存泄漏

“CPPCheck 插件包”包未正确加载