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