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
, 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. Любые расходящиеся мнения?