C++匿名命名空间
当定义一个命名空间时,可以忽略这个命名空间的名称:
编译器在内部会为这个命名空间生成一个唯一的名字,而且还会为这个匿名的命名空间生成一条using指令。所以上面的代码在效果上等同于:
在匿名命名空间中声明的名称也将被编译器转换,与编译器为这个匿名命名空间生成的唯一内部名称绑定在一起。还有一点非常重要,就是这些名称具有Internal链接属性,这和声明static的全局名称的链接属性是相同的,既名称的作用于被限制在当前文件中,无法通过在另外的文件中使用extern声明来进行链接。如果不提倡使用全局static声明一个名称拥有internal链接属性,则匿名命名空间可以作为一种更好的达到相同效果的方法。
最后更新于