Да, это странно. Это действительно , а не константное выражение, поскольку i
изменяется в цикле. Так что это может показаться проблемой с VS2005. Для чего стоит VS2008 делает то же самое.
Как ни странно, проект с просто в нем не жалуется, поэтому вполне может быть какая-то странная краевая проблема с кодом генерации предупреждения Microsoft:
#define MAX_BITS 15
int values_per_bitlen[ MAX_BITS + 1 ];
int main(int argc, char* argv[]) {
for ( int i = 0; i <= MAX_BITS; ++i )
values_per_bitlen[ i ] = 0;
return 0;
}
Однако вы на самом деле не задавали вопрос. Что вы хотите знать или хотите, чтобы мы делали?
Обновление:
См. «Программист Windows» для выяснения фактической причины - в верхней части LightZ.cpp есть "#define for if (false) {} else for"
, который вызывает проблему.