上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.11 使用匿名命名空间来代替静态全局空间
程序越大,当程序链接到多个编译单元时,发生命名冲突的可能性也就越大。在源文件某编译单元中声明的函数或变量可能会与在另一个编译单元中声明的类似函数或变量发生冲突。
这是因为所有没有被声明为静态的符号都有外部链接,而且它们的名称在整个程序中必须是唯一的。针对此问题,典型的C解决方案是将这些符号声明为静态的,将它们的链接从外部更改为内部,从而使它们成为编译单元的本地符号;另一种方法是在名称前面加上它们所属的模块或库的名称。在本节中,我们将讨论该问题的C++解决方案。