在C中定义函数内的函数

时间:2011-01-16 13:23:19

标签: c

  

可能重复:
  Are nested functions a bad thing in gcc ?

据我所知,C不允许在其他函数中定义函数。但是以下代码在gcc中编译并运行时没有任何错误。有人可以解释原因吗?另请参阅:http://ideone.com/AazVK

#include <stdio.h>

void val1( int x ) 
{
        void sig( int x ) {
                printf("%d\n",x*10);
        }
        sig(x);
}

int main()
{       
        void val2(int x) {
                x = x*10;
                val1(x);

                printf( "%d\n", x ); 
                if ( x < 10000 ) {
                        val2(x);                
                }
        }

        val2(20);

        return 0;
}

1 个答案:

答案 0 :(得分:11)

gcc(但不是g++)支持nested functions作为C language extension