好的,所以我知道我应该将我的代码嵌入命名空间来处理名称冲突。例如
My-Header-Only-Library.hpp
namespace AG {
namespace My_Header_Only_Library {
class Foo {
...
};
}
}
所以我有 AG::My_Header_Only_Library::Foo。
是的,我经常使用两个级别 - 第一个级别,不同的是 AG、AFG、libAG 等 - 用于“我的”东西(我已经维护了其中的一些库几十年,例如Valid<T>
)。
而且我经常有各种模块的子命名空间。
问题 #1:命名空间名称有时会发生冲突。
是的:我发现所有名称空间名称 AG、AFG、libAG 的冲突。是的,我遇到过与我姓名首字母相同的公司。
(有一段时间我用GLEW,觉得这是一个比较独特的姓氏。当时我是互联网上唯一的Glew,也是ARPAnet上第48个名字缩写为AG的人。(AG48)。但从那以后,OpenGL Extensions Wrangler 几乎已经从我这里拿走了它。)
我想“命名空间 AG_some_random_stuff_675567”不太可能发生冲突。人是这样的吗?使用一些长命名空间名称,然后使用
using AG_lib = AG_some_random_stuff_675567
或者你有没有尝试过像#defining 命名空间的名字这样的把戏。
例如
#define AG something_more_unique
问题2:我有时会给予、借出、允许公司使用我的图书馆。位我要求他们回馈更改,即他们不分叉。
它们的编码约定可能不一样。
我不希望他们更改命名空间名称,因为这会使他们的更改更难撤回。
问:怎么办?让他们做
using Their_Name = AG_some_random_stuff_675567