C++ 编译时是否为项目/库指定其他命名空间?

C++ 编译时是否为项目/库指定其他命名空间?,c++,namespaces,collision,code-organization,C++,Namespaces,Collision,Code Organization,我得到了一个C++项目的两个版本,这两个版本有很大的分歧。第1版的编写和结构非常清晰,第2版的功能非常先进,但组织得不是很好,实际上是一个黑匣子。 我的任务是将版本2的功能迁移到版本1 我认为,在版本1中使用版本2作为黑盒,然后用更干净的代码替换版本2的部分,同时始终检查结果是否不变,这可能是一个好方法 问题是,在尝试将版本2包含到版本1中时,出现了大量名称空间冲突。为了避免这种情况,我想为这两个版本分配一个单独的名称空间。有人知道如何在编译器级别上实现这一点吗 更一般地说,是否有人遇到过此类问

我得到了一个C++项目的两个版本,这两个版本有很大的分歧。第1版的编写和结构非常清晰,第2版的功能非常先进,但组织得不是很好,实际上是一个黑匣子。 我的任务是将版本2的功能迁移到版本1

我认为,在版本1中使用版本2作为黑盒,然后用更干净的代码替换版本2的部分,同时始终检查结果是否不变,这可能是一个好方法

问题是,在尝试将版本2包含到版本1中时,出现了大量名称空间冲突。为了避免这种情况,我想为这两个版本分配一个单独的名称空间。有人知道如何在编译器级别上实现这一点吗

更一般地说,是否有人遇到过此类问题,并能给出最佳实践建议?我会非常感激的


提前谢谢

这实际上取决于项目结构,但我发现自己也遇到了类似的情况,我最后做的是将所有内容从更高级(功能方面)的项目包装到自定义名称空间,再到纯文本替换。后来,我甚至设法完全合并了这两个项目,并删除了我引入的名称空间。