【测测你的编译器】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