C++ 项目相关知识命名空间

 我来答
黑科技1718
2022-07-23 · TA获得超过5892个赞
知道小有建树答主
回答量:433
采纳率:97%
帮助的人:82.4万
展开全部

命名空间一般是对全局变量,函数,类做处理的,以防多个重名变量引起的重定义错误。命名空间主要分为三种

你指定了一个名字为A的命名空间。这种命名空间具有外部链接属性,也就是说这个空间里的变量和函数会和其他文件同一名字的命名空间一起链接。
在同一个项目里,test1.cpp的内容为

把main.cpp内容为

编译链接的时候就会报错

重定义错误,因为在同一个命名空间里有多个同名变量分配了不同空间地址,a在test1.cpp里分配了空间,也在main.cpp里分配了空间。链接器不知道哪个空间才是该变量的正确地址。
所以不能在多个文件的同一个命名空间里定义同名变量,只能在其中一个文件定义,而别的文件里声明引用,对这两个文件进行如下修改
test1.cpp内容改成

main.cpp内容改成

结果是

使用另外一个cpp里命名空间里的变量的方法
test1.cpp里内容如下

main.cpp里内容如下

输出结果为

另一个"main.cpp"

运行结果如下

输出结果

你可以省略命名空间的名字,则该空间的所有变量只能被当前文件所引用,而不能被同一个项目里别的文件使用。这些变量具有internal链接属性,这和声明为static的全局名称的链接属性是相同的,即名称的作用域被限制在当前文件中,无法通过在另外的文件中使用extern声明来进行链接。命名空间都是具有external 连接属性的,只是匿名的命名空间产生的 UNIQUE_NAME 在别的文件中无法得到,这个唯一的名字是不可见的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式