Cppcheck(版本1.46.1)会针对此类枚举发出以下警告:
enum DATABASE_TYPE
{
DATABASE_TYPE_UNKNOWN = -1, // <- line of warning
DATABASE_TYPE_ORACLE,
DATABASE_TYPE_MSACCESS
};
冗余代码:发现以数字常量开头的语句
我认为这并不是冗余的。能够做到这样是非常重要的。
这是cppcheck的错误还是我没有看到什么东西?
更新
我设法将其简化为一个最小的例子。这很复杂,因为cppcheck有两个(进一步的)错误,使它看起来像是我的缩减没有效果。
有5个文件:a.h
、a.cpp
、b.h
、b.cpp
和inc.h
,内容如下。
VC9在没有警告的情况下编译它(警告级别4)。
// a.h
#pragma once
#include "inc.h"
// a.cpp
#include "a.h"
#include "b.h"
int main()
{
return 0;
}
// b.h
#pragma once
#include "inc.h"
// b.cpp
#include "b.h"
//inc.h
#pragma once
enum MY_ENUM_TYPE
{
INVALID_VALUE = -1,
FIRST_VALUE,
SECOND_VALUE
};
到目前为止,我非常有信心认为这是cppcheck的一个错误。是否有不同的意见?