【发布时间】:2013-01-11 02:22:48
【问题描述】:
好的,所以我知道我应该将我的代码嵌入到命名空间中以处理名称冲突。 例如
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
【问题讨论】:
-
下一步是什么?命名空间命名约定?
标签: c++ namespaces header-files libraries