Можете ли вы заставить PC Lint игнорировать определенные специальные перечисления, такие как "myenum_min" и "myenum_max"
Итак, учитывая следующий код:
typedef enum
{
myenum_a = 1,
myenum_b = 2,
myenum_c = 3,
myenum_max = 4
}myenum_t;
тогда позже
myenum_t test;
switch (test)
{
case myenum_a:
{
// do stuff
}
case myenum_b:
{
// do stuff
}
case myenum_c:
default:
{
// do stuff
}
}
Когда я запускаю lint для этого, я получаю ошибку 788: "myenum_max" не используется в переключателе по умолчанию ".
Я знаю, что могу использовать "//! E788", чтобы игнорировать это правило для данного конкретного оператора switch, но это означает:
- это правило будет игнорироваться для потенциальных допустимых перечислений, которые отсутствуют.
- Я должен добавить эту строку везде, где я добавляю такой оператор switch.
Или я могу полностью удалить правило с помощью "// -e788", но:
- Опять же, это правило будет игнорироваться для допустимых отсутствующих перечислений для ВСЕХ типов перечислений - так что еще хуже.
Что я действительно хочу, но не уверен, как это сделать (или, если она существует), так это игнорировать правило для данного перечисления что-то вроде:
typedef enum
{
myenum_a = 1,
myenum_b = 2,
myenum_c = 3,
myenum_max = 4 // !eXXX - ignore this enum
}myenum_t;
Это возможно?
1 ответ
PC-Lint не предоставляет специальной команды для подавления сообщений, касающихся значений перечисления, НО предоставляет опцию -estring(#, string)
подавить конкретное сообщение об ошибке, содержащее указанную строку. Это может использоваться для подавления определенных сообщений в определенных значениях перечисления.
Для вашего примера это должно работать:
//lint -estring(788, myenum_max)
добавление
Опция -estring(#, string)
был представлен с PC-Lint версии 9.00.