c++ 匿名空间与默认的空间是什么关系

  • 我想知道的是,匿名空间与默认的全局空间是什么关系?
  • 自由函数和变量是否是在匿名空间中?如果是,下面代码原因为何? 如下代码:
namespace
{
    int a = 10;
}

int  a = 20;

cout << ::a <<endl; //不会报错,如果自由函变量也是在匿名空间中,则应该报错
cout<<a << endl ; //报错ambigous,如果自由变量不在匿名空间中,为什么会报错?

建议你去查一下那个单词的意思;这个单词的意思是二义性的意思,也就是说,在你的匿名空间和全局空间都有一个a,但是你却没有指明空间名字,
导致计算机没法确定到底是哪个a;你第一个之所以不会报错就是因为你在前面加了空间名字

http://blog.csdn.net/lyyslsw1230_163com/article/details/9274395