具有内部链接的命名空间

时间:2019-03-15 03:19:13

标签: c++ linkage

[@ PasserBy发现我的问题是重复的。可以解决这个问题,谢谢。]

如何获取具有内部链接的命名空间?也就是说,如何获得外部源文件不可见的命名空间?我想要这个:

static namespace N {
    int foo() {return 10;}
    int bar() {return 20;}
}

但是,不幸的是,C ++无法识别static namespace

1 个答案:

答案 0 :(得分:3)

将命名空间包含在未命名空间中

namespace {
    namespace N {
        int foo() {return 10;}
        int bar() {return 20;}
    }
}

int sum()
{
    return N::foo() + N::bar();
}

之所以可行,是因为未命名的名称空间会自动将其成员(在这种情况下,唯一的成员是名称空间N)导出到周围的范围,而不会将该成员暴露给其他源文件。

相关问题