Почему я могу определить функцию в другой функции?

см. код ниже, я определяю функцию в другой функции,

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.

Более того, какова общая сцена этого использования или для чего используется это использование?

Ответы на вопрос(4)

Ваш ответ на вопрос