Исправление pftBest, (текущая версия) :
Не все так просто, в общем случае компилятор не может доказать будет цикл бесконечным или нет. Просто заменить явные бесконечные циклы можно, но это не решит все проблемы.
Например код:
int main() {
unsigned number = 0;
for (;;) {
if (is_magic(number))
break;
number++;
}
#ifdef SOME_SHIT
printf("%u\n", number);
#endif
return 0;
}
Можешь вместо ifdef представить что там if(0) который получился после других оптимизаций.
Компилятор не может доказать существует ли волшебное число, и следовательно не знает бесконечный это цикл или нет. Но он видит что результат работы этого цикла никто не использует. Стандарт С++ позволят удалить этот цикл и не делать бесполезное вычисление. Но в других языках придется считать, даже если это не нужно.
Исходная версия pftBest, :
Не все так просто, в общем случае компилятор не может доказать будет цикл бесконечным или нет. Просто заменить явные бесконечные циклы можно, но это не решит все проблемы.
Например код:
int main() {
unsigned number = 0;
for (;;) {
if (is_magic(number))
break;
number++;
}
#ifdef SOME_SHIT
printf("%u\n", number);
#endif
return 0;
}
Можешь всесто ifdef представить что там if(0) который получился после других оптимизаций.
Компилятор не может доказать существует ли волшебное число, и следовательно не знает бесконечный это цикл или нет. Но он видит что результат работы этого цикла никто не использует. Стандарт С++ позволят удалить этот цикл и не делать бесполезное вычисление. Но в других языках придется считать, даже если это не нужно.