c语言命名空间详解

c语言命名空间详解

ID:8808042

大小:31.50 KB

页数:3页

时间:2018-04-08

c语言命名空间详解_第1页
c语言命名空间详解_第2页
c语言命名空间详解_第3页
资源描述:

《c语言命名空间详解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C语言命名空间详解C语言命名空间分析准则:1、在同一命名空间、相同作用域中,任何名字须具有唯一性2、每个结构和联合内部都有自己的命名空间(独立于其他空间)3、结构标签、联合标签、枚举标签共用一个命名空间(独立于其他空间)4、goto使用的标签名,只要在同一函数内部唯一(独立于其他空间)5、所有其他情况共用一个命名空间,如变量、所有枚举常量、typedef定义的别名等(独立于其他空间)6、#define宏有点特殊,宏覆盖所有命名空间,所有和宏同名的在预处理时都会被替换为宏,只要替换后没有语法错误,这种替换就在神不知鬼不觉中进行。一个能

2、够完整说明问题的例子#include#include//可以开关这个宏定义//并用gcc-Emain.c-omain.i来看宏的效果//#definemsghahastructmsg//【结构标签命名空间】{intmsg;//【结构内部的命名空间】,只需在结构内部唯一即可};unionu_msg//【联合标签命名空间】和结构、枚举标签共用一个命名空间,故这里//不能再用msg或e_msg{intmsg;//联合内部的命名空间,只需在联合内部唯一即可};//【其他命名空间】intmsg;//这里可

3、以用msg,只要【其他命名空间】中唯一即可typedefunsignedintuint;enume_msg//【枚举标签命名空间】和结构、联合标签共用一个命名空间,故这里//不能再用msg或u_msg{zero=0,//枚举常量也属于【其他命名空间】部分one,two,};voidfunc(void){msg://【标签名命名空间】,只要在函数内部唯一即可return;}intmain(intargc,char*argv[]){structmsg//较小作用域覆盖全局作用域的定义{char*msg;}msg;enume_msg{ze

4、ro=0,one,five,};msg://标签名命名空间,只要在函数内部唯一即可return0;}当打开#definemsghaha宏定义后,查看经预处理后源码文件main.i最后部分大致如下:structhaha{inthaha;};unionu_msg{inthaha;};inthaha;typedefunsignedintuint;enume_msg{zero=0,one,two,};voidfunc(void){haha:return;}intmain(intargc,char*argv[]){structhaha{cha

5、r*haha;}haha;enume_msg{zero=0,one,five,};haha:return0;}可见预处理器把所有与宏相同的符号都进行了文本替换,只要替换后没有语法错误,就能通过编译。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。