C语言中同一个函数体内可以再包含一个函数体吗

比如程序:
void main()
{
.........

void output()

{
.........

}

..........

}
这样可以吗

呵呵,这个问题简单的回答是c语言规定了不能这样。c语言是计算机的一门语言,也有其特定的语法,就像英语那样,不合语法规定的我们就认为是错误的或不地道的或有歧义的。但计算机只有正确(1)与错误(0),没得选了。
至于为什么当初制定语法时这样规定了(好像是先有实践,后有理论的哦,呵呵),我认为可以从下面的几点看:
1。从c/c++编译器编译方式来看。编译器编译的方式是逐条往下编译的。要是一个函数中又定义一个函数,则编译器很容易搞混,分不清到底那一句是函数1的那一句是函数2的,就很有可能上面一句是函数1的,下一句就直接跳到函数2的,跳来跳去的,也只有人能认清,计算机没有像人那样的跳跃思维。所以,语法就这样规定了,这样就可以避免很多的混乱和错误。
2.从审美的角度来看。其实不用我多说,你一看到一个函数里又定义另一个函数时,你就觉得很乱了。尤其是当代码写得很长很长是,更弱爆了!
3.从使用,管理方便角度看。这样规定了,可以使编程模块化,就是不用等前面的写完,后面的才能写。它可以同时进行n个模块(模块可以简单的认为是一个或多个的函数),方便且提高效率啊。追问

void main()
{
.........

output();

}
那这样可以吗?林外还有,定时器函数比如void Timer0_isr(void) interrupt 1 在其他模块调用时怎么调用呢,多谢解答

追答

我没法描述了,只能推荐你去看实例,http://wenku.baidu.com/link?url=SN5LXG8UOMoyufz576_G2gqud3b2IffhEam89Foz44ITE1sPhR2qlWqUaeLoW2jYaybLrkaDXHPyr_RvpBD3uMhiAo3l2K23zAaHAhTvlZ_

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-23
你这样是错的!
在函数体内可以调用函数,声明函数,但不可以定义函数!追问

void main()
{
.........

output();

}
那这样可以吗?另外还有定时器函数比如void Timer0_isr(void) interrupt 1 在其他模块调用时怎么调用呢,多谢解答

追答

void main()
{
.........

output();

}
这样是对的,这才是函数调用
去查一下这三个词的意思吧,时间紧不能长篇大论了

1、函数声明
2、函数调用
3、函数定义(函数实现)

本回答被提问者和网友采纳
第2个回答  2014-10-23
不可以,可以声明,然后在函数体外定义追问

void main()
{
.........

output();

}
那这样可以吗?另外还有定时器函数比如void Timer0_isr(void) interrupt 1 在其他模块调用时怎么调用呢,多谢解答

追答

这样是调用了这个函数,语法上是正确的,但是需要在main函数之前给出定义。
第二个问题,你将包含Timer0_isr函数的文件包含到当前文件中来,例如Timer0_isr的定义在fun.c文件中,用 #include "fun.c"

第3个回答  2014-10-23
不行.. 函数声明必须在外面追问

void main()
{
.........

output();

}
那这样可以吗?另外还有定时器函数比如void Timer0_isr(void) interrupt 1 在其他模块调用时怎么调用呢,多谢解答