如何在另一个命名空间中使用常量定义的extern?

时间:2016-04-01 15:45:07

标签: c++ visual-c++ namespaces extern linkage

我正在努力克服C ++中的变量链接。假设有一个人: 1

namespace MyNamespace
{
    extern "C" const bool ReferToMe = true;
}

我希望能够通过名称空间限定常量名称(即MyNamespace::ReferToMe)从另一个名称空间引用该常量。但是,无法编译:

error C2039: 'ReferToMe': is not a member of 'MyNamespace'
error C2065: 'ReferToMe': undeclared identifier

为什么这不起作用? 如何引用如上所示定义的常量?


1。当类型库imported同时具有named_guidsrename_namespace属性时,预处理器以这种方式定义GUID常量。

1 个答案:

答案 0 :(得分:1)

我认为您必须使用两个 extern字,因为第一个(extern "C")表示链接器规范(无重复)和第二个 - 变量的外部性。 尝试这样的事情:

namespace MyNamespace
{
    extern "C"
    {
        extern const bool ReferToMe;
    }
}

extern "C"
{
    extern const bool ReferToMe;
}

namespace MyNamespace
{
    const bool &ReferToMe(::ReferToMe);
}