首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未命名命名空间优于静态命名空间?

未命名命名空间优于静态命名空间?
EN

Stack Overflow用户
提问于 2010-12-13 00:02:22
回答 1查看 42.6K关注 0票数 145

未命名的命名空间如何优于static关键字?

EN

回答 1

Stack Overflow用户

发布于 2014-03-27 17:01:36

与此相关的是一个有趣的问题:

假设您使用static关键字或未命名的namespace在模块(翻译单元)内部创建一些函数,因为该函数是由模块内部使用的,不能在模块外部访问。(除了函数之外,未命名的namespace还具有将数据和类型定义放在内部的优点)。

随着时间的推移,模块实现的源文件越来越大,您希望将其拆分为几个单独的源文件,这样可以更好地组织代码,更快地找到定义,并且可以独立编译。

但是现在您面临一个问题:这些函数不再是模块的static,因为static实际上并不引用模块,而是引用源文件(翻译单元)。您必须将它们设为非static,以允许从该模块的其他部分(目标文件)访问它们。但这也意味着它们不再对模块隐藏/私有:有了外部链接,它们可以从其他模块访问,这并不是您的初衷。

未命名的namespace也不能解决这个问题,因为它也是为特定的源文件(翻译单元)定义的,不能从外部访问。

如果可以指定某个namespaceprivate的,那就太好了,也就是说,无论其中定义了什么,都是由它所属的模块在内部使用的。当然,C++没有“模块”这样的概念,只有“翻译单元”,它与源文件紧密绑定在一起。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4422507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档