#include <iostream>
namespace
{
int a=1;
}
int a=2,b=3;
int main(void)
{
std::cout<<::a<<::b;
return 0;
}
我用我的g ++编译它,但输出是23,
谁能解释一下?
这是一种访问<unnamed> namespace ::a
的方法吗?
答案 0 :(得分:3)
namespace
{
namespace xxx
{
int a = 1;
}
}
...
std::cout << xxx::a << ::b;
答案 1 :(得分:3)
::
中的 ::a
指的是全局命名空间。应该只通过a
访问匿名命名空间(或者更具体地说,你根本不应该这样做)
答案 2 :(得分:2)
使用未命名的命名空间,这是不可能的。请参阅以下文章
你必须去命名命名空间。
答案 3 :(得分:0)
您可以访问全局命名空间,但不要重新定义它。
#include <iostream>
namespace
{
int a=1;
}
int b=3;
int main(void)
{
std::cout<<::a<<::b;
return 0;
}
这里的出局是13。