免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4268 | 回复: 19
打印 上一主题 下一主题

函数作用域。。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-18 14:55 |只看该作者 |倒序浏览
没想到C语言的函数可以和变量一样灵活:

#include <stdio.h>

int main()
{
&nbsp;&nbsp;&nbsp;&nbsp;void aaa()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void bbb(){printf("inner bbb\n");}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("aaa\n");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bbb();
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;void bbb(){printf("outer bbb\n");}

&nbsp;&nbsp;&nbsp;&nbsp;aaa();
&nbsp;&nbsp;&nbsp;&nbsp;bbb();
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return 1;
}


C语言是怎么实现的,纳闷~

论坛徽章:
0
2 [报告]
发表于 2008-12-18 14:56 |只看该作者
打印输出:
aaa
inner bbb
outer bbb

论坛徽章:
0
3 [报告]
发表于 2008-12-18 14:57 |只看该作者
标准C不可以
这是GCC扩展

论坛徽章:
0
4 [报告]
发表于 2008-12-18 15:01 |只看该作者
原帖由 cugb_cat 于 2008-12-18 14:57 发表
标准C不可以
这是GCC扩展


老大,你知道的GCC扩展可真多。。
不过,我确实是用GCC编译过了

论坛徽章:
0
5 [报告]
发表于 2008-12-18 15:11 |只看该作者
奇怪,两个同名同参数的函数,在符号表中怎么不会有冲突??

论坛徽章:
0
6 [报告]
发表于 2008-12-18 15:15 |只看该作者
原帖由 maxxfire 于 2008-12-18 15:11 发表
奇怪,两个同名同参数的函数,在符号表中怎么不会有冲突??

符号作用域不同

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2008-12-18 15:17 |只看该作者
原帖由 maxxfire 于 2008-12-18 14:55 发表
没想到C语言的函数可以和变量一样灵活:

嵌套定义函数么,这个实在没有什么新鲜的,许多语言(早)就支持了,例如 Pascal, 例如 Perl。至于说到实现,也没有多复杂,和普通的函数类似。

论坛徽章:
0
8 [报告]
发表于 2008-12-18 15:18 |只看该作者
就有点像C++中的namespace

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2008-12-18 15:19 |只看该作者
原帖由 maxxfire 于 2008-12-18 15:11 发表
奇怪,两个同名同参数的函数,在符号表中怎么不会有冲突??

和不同作用域中的同名同类型局部变量不会冲突的道理是类似的。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
10 [报告]
发表于 2008-12-18 15:31 |只看该作者
原帖由 maxxfire 于 2008-12-18 15:01 发表


老大,你知道的GCC扩展可真多。。

gcc 的手册专门有一章描述它实现的各种扩展。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP