永发信息网

c++,我发现一个问题。匿名命名空间里面的变量怎么引用啊?他没有空间名啊啊啊啊,怎么引用

答案:2  悬赏:50  手机版
解决时间 2021-03-17 21:30
c++,我发现一个问题。匿名命名空间里面的变量怎么引用啊?他没有空间名啊啊啊啊,怎么引用
最佳答案
在本文件中,直接使用。
在其他文件中无法使用。

当定义一个命名空间时,可以忽略这个命名空间的名称:
namespce {
char c;
int i;
double d;
}
编译器在内部会为这个命名空间生成一个唯一的名字,而且还会为这个匿名的命名空间生成一条using指令。所以上面的代码在效果上等同于:
namespace __UNIQUE_NAME_ {
char c;
int i;
double d;
}
using namespace __UNIQUE_NAME_;

在匿名命名空间中声明的名称也将被编译器转换,与编译器为这个匿名命名空间生成的唯一内部名称(即这里的__UNIQUE_NAME_)绑定在一起。还有一点很重要,就是这些名称具有internal链接属性,这和声明为static的全局名称的链接属性是相同的,即名称的作用域被限制在当前文件中,无法通过在另外的文件中使用extern声明来进行链接。如果不提倡使用全局static声明一个名称拥有internal链接属性,则匿名命名空间可以作为一种更好的达到相同效果的方法。

注意:命名空间都是具有external 连接属性的,只是匿名的命名空间产生的__UNIQUE_NAME__在别的文件中无法得到,这个唯一的名字是不可见的.

C++ 新的标准中提倡使用匿名命名空间,而不推荐使用static,因为static用在不同的地方,涵义不同,容易造成混淆.另外,static不能修饰class。
全部回答
可以直接使用变量名引用,但引用的范围局限于同一个源文件。匿名命名空间的作用同原c语言中的加在全局变量、函数定义或声明前的static相同,都是将对变量、函数等的引用范围限制在同一个源文件中。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
松山印刷厂地址在什么地方,想过去办事
有没有查询地址的软件?悬赏100
重庆农村商业银行(龙项分理处)地址好找么,我
想做个东西,但是自己生产不了,怎么能和大厂
求大神,怎么破解安卓扣扣5.2@全体成员的次数
有谁为城管说句公道话。前些日小商小贩占道经
宫锁心玉杨幂逃出陵墓是哪一集
Communication technologies are far from eq
可可司美食茶饮连锁在什么地方啊,我要过去处
滨海利玛广场地址在哪,我要去那里办事
有假皈依证吗
宿迁京东商城招聘快递员方式
我国在1949年和2000年人口总数量分别是(  
餐厅厨房大面积漏水,但不知道是哪里的问题
别克君越的机械真空泵漏油了,更换还是能修好
推荐资讯
我突然明白为什么都说长城宽带不好了
老白家鲜奶工坊东大街分店在什么地方啊,我要
如何在XP下进行指定权限共享?只能几个人进行
氓原文 诗经里面的
草坪中路我想知道这个在什么地方
躲在姐姐床底下想吓她叫什么书名
黑箐梁子在什么地方啊,我要过去处理事情
剥牛坑在哪里啊,我有事要去这个地方
弘武跆拳道馆(二部)在什么地方啊,我要过去处
问一下那个解说逆风笑他玩符石守护者的时候,
达快餐店地址在什么地方,想过去办事
斜齿轮模数计算公式
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?