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?
}
}
}