c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙。};}现在就算在同一个程序中使用String类也不会发生冲突了,因为他们分别变成了:one::String()以及Somelib::String()这样,就可以通过声明命名空间来区分不同的类或函数等了。
当定义一个命名空间时,可以忽略这个命名空间的名称:在匿名命名空间中声明的名称也将被编译器转换,与编译器为这个匿名命名空间生成的唯一内部名称(即这里的__UNIQUE_NAME)绑定在一起。如果不提倡使用全局static声明一个名称拥有internal链接属性,则匿名命名空间可以作为一种更好的达到相同效果的方法。