相关疑难解决方法(0)

嵌套未命名的命名空间

这两个未命名的命名空间的嵌套用法之间是否存在功能差异:

namespace A { namespace {
  void foo() {/*...*/}
}}
Run Code Online (Sandbox Code Playgroud)

namespace { namespace A {
  void foo() {/*...*/}
}}}
Run Code Online (Sandbox Code Playgroud)

据我所知,两个foos都将获得每个编译单元的内部唯一标识符,并且可以使用A::foo- 但是有一个微妙的或不那么微妙的区别,我没有看到?

c++ namespaces

15
推荐指数
1
解决办法
1937
查看次数

常规命名空间内匿名命名空间内符号的链接

在C++中,将函数或变量放在匿名命名空间中会使其内部链接,即与static在文件级别上声明它相同,但却是惯用的C++.

普通命名空间中的匿名命名空间怎么样?它仍然保证内部联系吗?

// foo.cpp

void func1() {
    // external linkage
}

static void func2() {
    // internal linkage
}

namespace {
    void func3() {
        // internal linkage
    }
}

namespace ns1 {
    void func4() {
        // external linkage
    }

    namespace {
        void func3() {
            // still internal linkage?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ namespaces anonymous linkage

14
推荐指数
3
解决办法
7238
查看次数

标签 统计

c++ ×2

namespaces ×2

anonymous ×1

linkage ×1