【问题标题】:How to shorten the namespace indentation in C++ header files without using 'using'?如何在不使用“使用”的情况下缩短 C++ 头文件中的命名空间缩进?
【发布时间】:2012-05-22 12:34:30
【问题描述】:

如果您使用命名空间来分离模块/结构化,则头文件中的嵌套和缩进会显着增加。有没有办法用更短的方式编写以下代码?

namespace A
{
    namespace B
    {
        namespace C
        {
            namespace D
            {
                namespace E
                {
                    template <typename T>
                    public class X
                    {
                        public: ...

例如喜欢

namespace A::B::C::D::E
{
  template<typename T> ...
}

在c++的头文件中?

【问题讨论】:

  • 尽量避免这么深的嵌套。
  • namespace A::B::C {namespace A { namespace B { namespace C {之间真的有很大区别吗?您不必像以前那样缩进所有内容。
  • Google C++ Style Guide 建议不要缩进命名空间。
  • @Fiktik 不同的是可读性(这确实是c++的一个弱点)

标签: c++ coding-style namespaces


【解决方案1】:

不,嵌套命名空间语法之前曾在不同时间和地点提出过建议,但无效。

你不需要缩进

namespace A { namespace B { namespace C {
// ...
} } } // namespace A::B::C

【讨论】:

    【解决方案2】:

    您可以使用命名空间别名。这不适用于扩展现有的命名空间,但更便于访问。

    您可以使用宏来扩展现有的命名空间,但是如果您需要这样做,您可能拥有比您需要或想要的更深的命名空间层次结构。

    【讨论】:

    • 问题是在标题中的命名空间中声明事物的上下文中,您不能为此使用别名,因为您不能在命名空间别名中声明事物。还有宏?哎呀。
    • 就个人而言,我不喜欢宏/预处理器定义并尽可能避免使用它们
    猜你喜欢
    • 2013-05-17
    • 2017-05-08
    • 1970-01-01
    • 2011-08-12
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多