问一个关于命名空间的问题
近来看C++ PRIMER 遇到的问题:
namespace local
{
namespace
{
int idata = 0;
}
}
local::idata = 10;
书中说这样是ok的,
可是我放到VS2005下编译错误
error C2374: “local::`anonymous-namespace'::idata”: 重定义;多次初始化
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
两个错误都指向local::idata = 10;这一行,请问是什么问题啊?
还有,想问第二个问题,如果在全局中定义变量同样命名为idata,会和未命名空间中的变量冲突么?
[解决办法]
# include <iostream>using namespace std;namespace local{ namespace { int data = 0; }}int main(){ cout << ++local::data << endl; return 0;}
[解决办法]
全局区域只能有变量的声明/定义,不能有语句,这个基本的知识LZ还清楚?
# include <iostream>using namspace std;int a = 0; // 这里是全局变量的定义a = 1; // 这是一个语句,在全局区域是不允许的int main(){ return 0;}