这个嵌套命名空间语法在C中是标准的吗?

这是C的标准吗?在C#中,我喜欢声明嵌套的命名空间,如下所示:

namespace A.B 
{
    class X
    {
    };
}

替代方案就是这个,这有点丑陋:

namespace A
{
    namespace B
    {
        class X
        {
        };
    }
}

在C中,我想看看它是否有类似的功能.我最终找到了这个作品:

namespace A::B
{
    class Vector2D
    {
    }
}

请注意::.

我很好奇这是标准C还是MS功能.我找不到任何文件.我的古老的C 98参考书没有提到它,所以我想知道它是微软的扩展还是新功能.

解决方法:

是的,这是legal C++ 17语法.但是,它不是嵌入式命名空间,而是嵌套命名空间.

namespace ns_name::name (8) (since C++17)

[…]

8) nested namespace definition: namespace A::B::C { ... } is equivalent to namespace A { namespace B { namespace C { ... } } }.

上一篇:2019银川网络赛


下一篇:java – 是否有可能在Apache Spark中创建嵌套的RDD?