使用嵌套命名空间时,有时完全限定名称会变得很长。我知道我可以用namespace abc = aaa::bbb::ccc
它来减少打字量(在某些情况下它也可以提高可读性)。
但是,我不确定在项目中的所有文件中实现这种重命名的最佳方法是什么。直接的方法(即,在每次使用的基础上重命名长名称空间)可能会导致最终在不同文件中为相同的完全限定名称使用不同的短名称。所以,我正在考虑想出一个更一致的方法来做到这一点。
例如,让我们假设如下:
project
|- client
| |- core
| |- plugin
| |- util
|- server
...
我正在考虑为每个目录创建一个标题,包括减少的名称。例如,project/client/core/core.h
将包含namespace pr_cl_core = project::client::core
(我知道这个短名称的示例相当糟糕,但在实际项目中它们更有意义)。然后,我将包含core.h
到所有头文件中,project/client/core
以便当该目录中的头文件包含在中时,比方说,project/client/plugin/plugin_foo.h
短命名空间版本很容易获得。
这是一个很好的方法吗?还有其他更好的方法吗?
我在 SO 上发现了几个关于 C++ 命名空间的问题(例如1和2),但没有一个与如何以项目范围的方式解决命名空间重命名有关。
编辑:此外,这种机制可用于系统地重命名整个项目的长名称空间(例如 Boost 的名称空间)。例如,我通常重命名一些命名空间,例如:
namespace ip = boost::asio::ip;
namespace ptime = boost::posix_time;
目前我在每个翻译单元的基础上执行此操作,但我想对整个项目使用全局方法来执行此操作。