gpt4 book ai didi

c++ - 常规命名空间内匿名命名空间内的符号链接(symbolic link)

转载 作者:IT老高 更新时间:2023-10-28 22:33:43 28 4
gpt4 key购买 nike

在 C++ 中,将函数或变量放入匿名命名空间会使其内部链接,即。 e.与在文件级别声明它 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?
}
}
}

最佳答案

匿名命名空间中的实体不一定具有内部链接;他们实际上可能有外部联系。

由于未命名的命名空间的名称对于编译它的翻译单元来说是唯一的,所以您不能从该翻译单元之外引用其中声明的实体,无论它们的链接是什么。

C++ 标准说(C++03 7.3.1.1/note 82):

Although entities in an unnamed namespace might have external linkage, they are effectively qualified by a name unique to their translation unit and therefore can never be seen from any other translation unit.

关于c++ - 常规命名空间内匿名命名空间内的符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4181059/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com