名字空间的产生?谢谢高手指点!!!!!

chinalhx 2001-08-25 10:10:19
在《Thingking in c++》中第163页,写道:“每个编译单元要确保只有一个未命名的名字空间,如果把一个局部名字放在一个为命名的名字空间中,无需加上static说明就可以让他们做内部连接。”
我不懂 1、什么是未命名的名字空间,如何确保又一个呢?
2、如何把一个局部名字放在一个为命名的名字空间中?
3、内部连接是不是指在一个编译单内(对于C++来说,就是一个*.cpp)呢?
4、关于连接控制总提到“在文件范围内”,是指什么文件?
谢谢高手指点!!!!!请理解!!!!!!!
...全文
85 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LANDFISH 2001-08-27
  • 打赏
  • 举报
回复
偷偷问一句:什么叫namespace啊?^_^
chinalhx 2001-08-27
  • 打赏
  • 举报
回复
那么,内部连接就是指不同的变量在同一个*.cpp文件中使用的;
外部连接是指不同*.cpp文件中的变量互相使用(通过extern来定义)。 对吗?
ploto 2001-08-27
  • 打赏
  • 举报
回复
你把名字空间看成是类指示符即可了,比如说:
class a
{
void foo();
};
class b
{
void foo();
};
void foo();
你要使用a中的foo,就要用a::foo(),你如果调用foo(),就是直接调用了不在类中的foo()函数了。名字空间也一样,我懒得再写了,反正你如果直接定义两个foo()函数就冲突了,使用名字空间也和使用类来进行域限制一样的。再不理解就给我发EMail,qizhong@etang.com
xwu 2001-08-26
  • 打赏
  • 举报
回复
这段的原文是:
It is guaranteed that an unnamed space is unique for each translation unit. If you put local names in a unnamed namespace, you don't need to give them internal linkage by making them static.

第一句翻译的不对. 这句话的意思是: "无名的名字空间" 对于每个编译单元都是独一无二的.

所以:
1. "未命名的名字空间" 在这段文章的上一段已经介绍的很详细了. 编译器回确保只有一个.
2.
namesapce {
int a;
...
}
3.是
4.应该是指一个编译单元.(.CPP 文件)

70,031

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧