Я просто столкнулся с тем ANSI (ISO), не позволяет вложение функции.. я хочу знать то, что делает гну c реализацией ITO эта функциональность (почему такая потребность возникает).
Если функция говорит (()), определяют с в другой функции, говорят (b ()) затем, время жизни () было бы целой программой?
Будет устройство хранения данных для () ll быть созданным в стеке, выделенном функции b ().?
Я считаю, что 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) Весьма субъективно. Понятия не имею. : -)
2) Нет, время жизни внутренней функции ограничено временем жизни внешней функции. См. документацию GCC о вложенных функциях . Если вы сохраните указатель на внутреннюю функцию и вызовете ее после возврата из внешней функции, могут произойти неприятности.
3) Внутренняя функция выделяет свое собственное пространство стека, как и любая другая функция. Он должен выделить свое собственное пространство для поддержки рекурсивных вызовов.