Здравствуйте, sergii.p, Вы писали:
SP>компилятор всё равно превращает
Неважно что там внутре компилятора. С т.з. исходного кода там именно return.
SP>так что есть return или нет — на работоспособность никак не влияет. Программист точно также может забыть сделать *ret = 0 во втором коде, как и в первом не вызвать return. Ошибка одного порядка.
Если не влияет, откуда тогда сабж? Как компилятор умудрился сгенерить illegal instruction и зачем?
Могу предоложить лишь ситуацию, когда код unreachable:
bool f() {
if(inFactAlwaysTrue()) {
return true;
}
//never getting here, never crashing
}
вот наверное тут будет не очень хорошо с т.з. совместимости кидать ошибку компиляции.