具有内部链接的命名空间
Named namespace with internal linkage
[@PasserBy 发现我的问题是重复的。问题可以关闭了,谢谢。]
如何获得具有内部链接的命名空间?也就是说,如何获得对外部源文件不可见的命名空间?我想要这个:
static namespace N {
int foo() {return 10;}
int bar() {return 20;}
}
然而,不幸的是,C++ 无法识别 static namespace
。
在未命名的命名空间中包含命名的命名空间:
namespace {
namespace N {
int foo() {return 10;}
int bar() {return 20;}
}
}
int sum()
{
return N::foo() + N::bar();
}
这是可行的,因为未命名的命名空间会自动将其成员(在本例中是命名空间 N
的唯一成员)导出到周围的范围,而不会将成员暴露给其他源文件。
[@PasserBy 发现我的问题是重复的。问题可以关闭了,谢谢。]
如何获得具有内部链接的命名空间?也就是说,如何获得对外部源文件不可见的命名空间?我想要这个:
static namespace N {
int foo() {return 10;}
int bar() {return 20;}
}
然而,不幸的是,C++ 无法识别 static namespace
。
在未命名的命名空间中包含命名的命名空间:
namespace {
namespace N {
int foo() {return 10;}
int bar() {return 20;}
}
}
int sum()
{
return N::foo() + N::bar();
}
这是可行的,因为未命名的命名空间会自动将其成员(在本例中是命名空间 N
的唯一成员)导出到周围的范围,而不会将成员暴露给其他源文件。