вложенная функция

  1. Я просто столкнулся с тем ANSI (ISO), не позволяет вложение функции.. я хочу знать то, что делает гну c реализацией ITO эта функциональность (почему такая потребность возникает).

  2. Если функция говорит (()), определяют с в другой функции, говорят (b ()) затем, время жизни () было бы целой программой?

  3. Будет устройство хранения данных для () ll быть созданным в стеке, выделенном функции b ().?

1
задан John Saunders 5 June 2010 в 12:13
поделиться

2 ответа

Я считаю, что http://en.wikipedia.org/wiki/Nested_function отвечает на большую часть вашего вопроса #1. Вопрос #2 более подробно рассмотрен в http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html, а вопрос #3 в http://gcc.gnu.org/onlinedocs/gccint/Trampolines.html.

Edit: (Aside) В статье википедии необъяснимым образом оставлен PL/M в списке языков на базе АЛГОЛа, поддерживающих вложенные функции. Ах, старые добрые времена.

1
ответ дан 3 September 2019 в 00:02
поделиться

1) Весьма субъективно. Понятия не имею. : -)

2) Нет, время жизни внутренней функции ограничено временем жизни внешней функции. См. документацию GCC о вложенных функциях . Если вы сохраните указатель на внутреннюю функцию и вызовете ее после возврата из внешней функции, могут произойти неприятности.

3) Внутренняя функция выделяет свое собственное пространство стека, как и любая другая функция. Он должен выделить свое собственное пространство для поддержки рекурсивных вызовов.

1
ответ дан 3 September 2019 в 00:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: