标题:调试了很多遍,还是不行,可以帮我看看么
只看楼主
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
回复 20楼 renkejun1942
我不能理解为什么会把函数嵌套定义纳入标准,明显不符合结构化程序设计规范嘛!
2017-06-06 21:26
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 21楼 xzlxzlxzl
我距离说明一下为什么使用嵌套函数,但我不是标准定义的人,所以我并不知道为什么会将它纳入标准。

int main( void )
{
    void print( void )
    {
        printf( "这是嵌套函数,用来避免函数过多污染名字空间。这样print这个名字就可以用在本文件中的多个地方。" );
    }
   
    print();//这样就可以多次使用这个名字。虽然说内联函数同样可以避免名字空间的污染,但是它被限制在了不同的文件,而嵌套函数可以在同一个文件中使用。
    fun();
}

void fun( void )
{
    void print( void )
    {
        printf("这也是一个嵌套函数。");
    }
    print();
}

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-06 21:30
大大哟nice
Rank: 2
等 级:论坛游民
威 望:3
帖 子:15
专家分:30
注 册:2016-11-26
得分:0 
以下是引用xzlxzlxzl在2017-6-6 21:12:08的发言:

学习了!
赶快百度了下,http://c.是说函数不能嵌套,http://blog.说函数嵌套是gcc扩展功能里允许,既是扩展就应该不算标准。
看来还是学习不够

目前好像只有gcc能够编译,其他的c编译器好像均不支持这种写法,所以感觉现在并不能作为标准,对于初学者还是老老实实将函数放在外面比较合适。
2017-06-06 21:33
wFengJ
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-6-6
得分:0 
回复 17楼 xzlxzlxzl
恩恩,受教了,不过程序好像还是有问题,可以输出了不过数据不对
2017-06-06 21:34
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
回复 22楼 renkejun1942
有点明白,也就是说嵌套的函数只能在其外函数里调用,其外外的地方看不见它。嗯,还是有点用的。
其实,这完全在以后的面向对象里去除的,对象里的私有函数完全可以既可以符合结构化,又可以不污染。

[此贴子已经被作者于2017-6-6 21:41编辑过]

2017-06-06 21:37
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 25楼 xzlxzlxzl
但是需要支持C99的编译器,但是VS2015都还不完全支持,刚试了下VS2015用不了。
不知道VS2017是否支持。

嵌套函数C++貌似很多年前就支持了。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-06 21:38
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 23楼 大大哟nice
这是因为GCC是占有最高的C编译器,别说VS,他是C++编译器,只是可以编译器C而已,他本来就没有义务支持C标准。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-06 21:40
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
我们老师当初说不能嵌套函数的~看来更新得很快啊~
还有什么数组定义长度要为常量~看来将来的发展趋势还用老套显得有点跟不上了~当然感觉还是C++的类方法在封装和继承的时候比较有实际意义~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-06 21:45
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 28楼 九转星河
不一定非要追求最新的标准。

嵌套函数不能用的话,那就用多个文件编译,把需要私有函数的函数单独丢一个文件里面,也就实现了。

变长数组不能用,那就用指针。

还是上次说的那个了,能用也就偷偷懒,不能用也能变相达成目的。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-06 21:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477693-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.199553 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved