use*_*638 3 c++ warnings initialization cppcheck
我运行commad(Ubuntu 12.04)
cppcheck test.cpp
Run Code Online (Sandbox Code Playgroud)
我期待来自cppcheck工具的未初始化变量警告.为什么cppcheck工具不能在命令行上打印它?
示例cpp代码:
#include <iostream>
class Foo
{
private:
int m_nValue;
public:
Foo();
int GetValue() { return m_nValue; }
};
Foo::Foo()
{
// Oops, we forget to initialize m_nValue
}
int main()
{
Foo cFoo;
if (cFoo.GetValue() > 0)
{//...
}
else
{//...
}
}
Run Code Online (Sandbox Code Playgroud)
有关信息..如果使用--enable = warning,cppcheck会写入此消息:
[test.cpp:13] :(警告)成员变量'Foo :: m_nValue'未在构造函数中初始化.
因为这些东西很难,而cppcheck不是全能的上帝和万物的创造者?
在一般情况下,某些问题实际上是不可行的;我不确定这是否是其中之一。但是,如果cppcheck一次仅检查一个翻译单位,那么,如果Foo::Foo在其他翻译单位中定义了该怎么办?