Я где-то читал, что вложенные функции допустимы в C (по крайней мере, компилятор GNU позволяет это). Рассмотрим следующий код:
/* nestedfunc.c */
#include <stdlib.h> /* for atoi(3) */
#include <stdio.h>
int F (int q)
{
int G (int r)
{
return (q + r);
}
return (G (5));
}
int main (int argc, const char* argv[])
{
int q = 0;
if (argc > 1)
{
q = atoi (argv[1]);
}
printf ("%d\n", F (q));
return 0;
}
Компиляция и запуск:
gcc -o nestedfunc -O2 -s -Wall nestedfunc.c
me@mybox:~/college/c++/other stuff$ ./nestedfunc 8
13
me@mybox:~/college/c++/other stuff$
Я также читал, что некоторые другие языки программирования поддерживают их. У меня такой вопрос: какое полезное назначение имеет вложенная функция? Заранее спасибо.