Почему я могу определить функцию в другой функции?
см. код ниже, я определяю функцию в другой функции,
void test1(void)
{
void test2(void)
{
printf("test2\n");
}
printf("test1\n");
}
int main(void)
{
test1();
return 0;
}
это использование странно, это использование c89 / c99 или только расширение gcc (я использовал gcc 4.6.3 в скомпилированной ubuntu 12). Я запускаю этот код, и он выводит «test2» и «test1» .test2 можно вызывать только в test1.
Более того, какова общая сцена этого использования или для чего используется это использование?