В отличие от Java, в C/ C++ следующее разрешено:
int* foo ()
{
if(x)
return p;
// what if control reaches here
}
Это часто вызывает сбои и проблемы с отладкой. Почему стандарт не обеспечивает выполнение окончательного возврата для функций non- void
? (Компиляторы генерируют ошибку для неправильного значения return
)
Есть ли какой-либо флаг в gcc/msvc для обеспечения этого? (что-то вроде -Wunused-result
)