首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问一个关于命名空间的有关问题

2012-09-10 
问一个关于命名空间的问题近来看C++ PRIMER 遇到的问题:namespace local{namespace{int idata 0}}local

问一个关于命名空间的问题
近来看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,会和未命名空间中的变量冲突么?





[解决办法]

C/C++ code
# include <iostream>using namespace std;namespace local{    namespace    {        int data = 0;    }}int main(){    cout << ++local::data << endl;    return 0;}
[解决办法]
全局区域只能有变量的声明/定义,不能有语句,这个基本的知识LZ还清楚?
C/C++ code
# include <iostream>using namspace std;int a = 0; // 这里是全局变量的定义a = 1; // 这是一个语句,在全局区域是不允许的int main(){    return 0;} 

热点排行