Очистка старого кода на языке c / c ++, в котором вместо перечислений использовались жестко запрограммированные целочисленные литералы, утомительно находить места, в которых объявление функции было должным образом реорганизовано, но не тело.например,
enum important {
little = 1,
abit = 2,
much = 3
};
void blah(int e)
{
// magic stuff here
}
void boing(int e) { ... }
void guck(important e)
{
switch (e) {
case 3: // this would be a good place for a warning
blah(e); // and this
break;
default:
boing((int)e); // but this is OK (although imperfect and a warning would be acceptable)
break;
}
}
Аннотирование / изменение каждого типа перечисления или поиск по коду для них также были бы изрядной работой, поскольку очень много разных перечислений, поэтому это не является предпочтительным, но может бытьприемлемое решение.
Мне не нужно, чтобы он был в каком-либо из наших основных компиляторов или других инструментах (в основном gcc) или платформе (в большинстве случаев), достаточно было бы запустить его пару раз вручную, но япредпочитаю что-то не слишком эзотерическое или дорогостоящее.