首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【测测你的编译器】C语言的“函数内部定义函数”,该如何解决

2012-02-20 
【测测你的编译器】C语言的“函数内部定义函数”#includestdio.h#includestdlib.hvoidc(){printf( c\n )

【测测你的编译器】C语言的“函数内部定义函数”



#include   <stdio.h>
#include   <stdlib.h>
void   c()
{
        printf( "c\n ");
}
void   b()
{
        int   i   =   0;
        c();
        void   a()
        {
               
                printf( "a   =   %d\n ",i++);
        }
        a();
        a();

}
int   main(int   argc,char*   argv[])
{
        b();
        return   0;
}

-------
这段代码保存为C文件,gcc编译后是没问题的,能执行而且结果和预期一致。g++编译不能通过。

这是比较奇怪的语法,虽然不符合“良好的编程习惯”,但是并非完全没有道理。我写这个测试程序的动机是有人有这么一个需求:
单片机开发环境,没有malloc之类的内存管理函数的环境下需要动态malloc一个空间,在一组函数用完之后就释放掉这个空间。

我觉得用这个奇怪的语法就可以解决这个问题。不知道路过的高手以为然否。

顺便就是大家都来测一下自己手头上用的编译器了,看看哪些能正常工作,哪些不能。

20分给最后一个有实质回帖内容的人。




[解决办法]
已上传
http://download.csdn.net/source/250290

热点排行