Эти же метки goto используются в файле C, но разные функции
Может кто-нибудь, пожалуйста, скажите, допустимо ли использовать те же метки goto в разных функциях в одном файле C?
Чтобы объяснить, с чем я столкнулся:
function1()
{
...
goto label
...
label:
...
}
function2()
{
...
goto label;
...
label:
...
}
Теперь происходит то, что код после метки используется для очистки данных malloc'ed. И все дело в сбое в функции2. Я распечатал mem. места, свободные и одинаковые, освобождаются несколько раз. Это из-за всех gotos? Является ли это допустимым использование инструкции goto?
Ответы
Ответ 1
Ярлыки являются локальными, поэтому вы можете использовать одну и ту же метку в нескольких функциях.
Вопрос о том, следует ли использовать goto
, - это совсем другое дело, и на него нелегко ответить. Короче говоря, не используйте goto
. Но, как и все (особенно когда речь заходит о программировании), существуют исключения, в которых goto
может быть полезным.
Ответ 2
Как сказал здесь Йоахим, метки являются локальными; но обратите внимание, что метки локальны для функций, а не для текущего блока. Операторы goto
не учитывают область охвата, за исключением охвата цельной функции.