在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?
}
}
}
static
。 - MSalters§3.5/4:未命名的命名空间或直接或间接在未命名的命名空间中声明的命名空间具有内部链接。所有其他命名空间都具有外部链接。
- legends2k