После почти часа отладки я наконец обнаружил точку с запятой после одного оператора return. Вот упрощенная версияНедостижимый код, но без предупреждения
void PrintNumber(int value) {
cout << value << endl;
}
void BuggyFunction(int value)
{
if (value == 0)
return
PrintNumber(value);
}
Да, PrintNumber никогда не будет вызван. Но компилятор (VS 2015) молчал. Есть ли причина такого поведения?
Ну, PrintNumber будет вызываться, если значение равно нулю. Я думаю, что визуальная студия анализирует только текущий метод, вам понадобится весь анализ программы, чтобы понять это. – tobspr
Хорошая логическая ошибка (действительный код, однако) –
Вы сохраните этот час в будущем, если вы используете квадратные скобки в каждом выражении if , –