одна хорошей причиной для это законно, так это то, что компилятор вполне может решить эту проблему во время компиляции, в зависимости от того, на какой стадии развития вы находитесь.
E.g. Вы могли бы использовать что-то вроде этого для отладки материал:
int glyphIndex;
...
#if CHECK_INVALID_GLYPH
glyphIndex = -1;
#endif
switch (glyphIndex)
...
компилятор знает наверняка, что glyphIndex -1 здесь, так что это так же хорошо, как константа. В качестве альтернативы, вы можете кодировать это следующим образом:
#if CHECK_INVALID_GLYPH
const int glyphIndex = -1;
#else
int glyphIndex = GetGlyph();
#endif
Вы не действительно хотите, чтобы изменить тело вашего переключателя заявление, только чтобы вы могли сделать небольшие изменения, как это, и компилятор вполне способен рационализировать код для устранения частей, которые никогда не будут выполнены в любом случае.
попробуйте компилировать с/W4, он должен выплюнуть предупреждение. Я также рекомендую всегда компилировать с помощью W4;) –
Вы должны были поставить это в ответ, так как он отвечает на реальный вопрос (почему он не был пойман). –
Есть некоторые проблемы с составлением 15-летней базы кода с W4, которая не была скомпилирована с W4 в течение 15 лет. –