Cppcheck(バージョン1.46.1)は、次のような列挙型に対して次の警告を出します。
enum DATABASE_TYPE
{
DATABASE_TYPE_UNKNOWN = -1, // <- line of warning
DATABASE_TYPE_ORACLE,
DATABASE_TYPE_MSACCESS
};
冗長コード:数値定数で始まるステートメントが見つかりました
冗長だとは思いません。そのようなことができることは非常に重要です。
これはcppcheckのエラーですか、それとも何かが表示されませんか?
アップデート
私はそれを最小限の例に要約することができました。これは、cppcheckに2つの(さらに)バグがあるために複雑になり、私の削減は効果がなかったように見えました。5つのファイルがあり
ます:、、、、a.h
および次a.cpp
の内容。
VC9は、警告なしでコンパイルします(警告レベル4)。b.h
b.cpp
inc.h
// 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のバグであるとかなり確信しています。意見の相違はありますか?