Почему недоступный код не является ошибкой в ​​C ++?

недоступный код — это ошибка времени компиляции в таких языках, как Java. Но почему это просто предупреждение в C ++ & C?
Рассмотрим следующий пример:

#include <iostream>
int f()
{
int a=3;
return a;
int b=6;       // oops it is unreachable code
std::cout<<b;  // program control never goes here
}
int main()
{
std::cout<<f()<<'\n';
}

Разве компилятор не должен выдавать ошибку в этой программе, потому что операторы после операторов возврата в функции f () никогда не будут выполнены? В чем причина запрета доступа к коду?

3

Решение

Недоступный код не является ошибкой компиляции в C ++, но обычно выдает предупреждение, в зависимости от вашего компилятора и флагов. Если компилятор остановился при обнаружении недоступного кода, у вас будет меньше возможностей для отладки кода, потому что вам также придется вручную удалять ненужный код.

Предупреждение вместо ошибки имеет смысл. Хорошо, что это упомянуто, поскольку можно было непреднамеренно оставить старый код, но в любом случае нет причин не компилировать.

12

Другие решения

Недоступный код является предупреждением, потому что нет необходимости, чтобы он был ошибкой,
кроме того, этого не всегда легко избежать.

  • Код, расширенный из макросов или константы проверки могут привести к недоступности кода.
  • Код может быть доступен или нет в зависимости от того,
    (общая кроссплатформенная разработка, например).
  • Сгенерированный код может привести к недоступности кода, который непрактично обнаружить на этапе генерации.

Кроме того, если вы хотите, чтобы это было ошибкой, поддержка GCC и CLANG -Wunreachable-codeтак что вы можете использовать -Werror=unreachable-code

1

По вопросам рекламы [email protected]