免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4073 | 回复: 8

c里面有命名空间这个概念吗? [复制链接]

论坛徽章:
0
发表于 2011-07-28 15:28 |显示全部楼层
struct drive_info { char dummy[32]; } drive_info;
这个编译是没有问题的,是因为在不同的命名空间吗?

论坛徽章:
0
发表于 2011-07-28 15:41 |显示全部楼层
struct drive_info {
           char dummy[32];
} drive_info;

声明了一个 结构体类型 叫 drive_info, 同时也定义了一个struct drive_info 结构体类型的变量
drive_info;

这样依然要使用struct drive_info sdinfo;

typedef struct drive_info {
           char dummy[32];
} drive_info;

这个才有意义吧.

直接可以这样定义了drive_info sdinfo;

论坛徽章:
0
发表于 2011-07-28 15:48 |显示全部楼层
但这个使用也确实 会有命名空间的问题的. 比如下面的.


typedef struct drive_info { char dummy[32]; } drive_info;

struct drive_info drive_info;                    可用
drive_info drive_info;                              错误

论坛徽章:
0
发表于 2011-07-29 13:07 |显示全部楼层
结构类型名和变量名不会冲突?求解释

论坛徽章:
0
发表于 2011-07-29 22:51 |显示全部楼层
变量名和 结构体, 枚举名. 不是一个命令空间的.

论坛徽章:
0
发表于 2011-07-30 09:23 |显示全部楼层
回复 5# linuxlixk


    我知道c++是这样的,c也是这样?你确定?

论坛徽章:
0
发表于 2011-07-30 10:34 |显示全部楼层
结构类型名和变量名不会冲突?求解释
pengjianbokobe 发表于 2011-07-29 13:07



    结构类型名是struct drive_info 而不是 drive_info
    作为类型名必须要有struct这个关键字,所以没有任何冲突

论坛徽章:
0
发表于 2011-07-30 20:52 |显示全部楼层
C语言存在多种命名空间:
1、标签名,例如case语句后的;
2、tag,例如结构体、枚举;
3、成员名,例如每个结构体里的成员
4、其它,……

每个命名空间内,必须具有唯一性。

详情请见《C专家编程》 3.7节

论坛徽章:
0
发表于 2011-08-03 09:32 |显示全部楼层
回复 6# pengjianbokobe


    是的, 我确定.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP