访问匿名命名空间内的变量(C++)

Don*_*hoi 5 c++ static anonymous unnamed-namespace

我有以下代码,但我不知道如何在此设置中访问匿名命名空间内的 x。请告诉我怎么做?

#include <iostream>

int x = 10;

namespace
{
    int x = 20;
}

int main(int x, char* y[])
{
    {
        int x = 30; // most recently defined
        std::cout << x << std::endl; // 30, local
        std::cout << ::x << std::endl; // 10, global
        // how can I access the x inside the anonymous namespace?
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 3

你不能!

您无法通过命名空间的名称访问其成员,因为它没有成员。
这是匿名的。

您只能通过已将这些成员拉入范围来访问这些成员。

  • @DongkyuChoi:这意味着不能在该翻译单元之外直接引用该对象。从某种意义上说,它使对象成为“文件本地”。它已被拉入该“文件”的范围,因此您可以在那里使用它(如您在问题中所示),但不能在其他地方使用它。 (2认同)