C/C++_log2000_namespace再探

来源:互联网 发布:网络中央控制主机 编辑:程序博客网 时间:2024/05/20 15:38
#include<iostream>using namespace std;int i;          //std 中的全局变量namespace a{    int i;      //a 中的全局变量}int main(){    i=5;            a::i=55;    {        using namespace a;        int j;        j=7;        cout<<"i="<<i<<endl;//如果不做设定,直接输出i会报错,因为不知道是输出全局变量i还是namespace a中的i        cout<<"j="<<j<<endl;    }    cout<<"i="<<i<<endl;    return 0;}

错误信息

||=== Build file: "no target" in "no project" (compiler: unknown) ===|~.cpp||In function 'int main()':|~.cpp|14|error: reference to 'i' is ambiguous|~.cpp|3|note: candidates are: int i|~.cpp|5|note:                 int a::i|||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

更改一下

#include<iostream>using namespace std;int i;          //std 中的全局变量namespace a{    int i;      //a 中的全局变量}int main(){    i=5;    a::i=6;    {        using namespace a;        int j;        j=7;        cout<<"i="<<a::i<<endl;        cout<<"j="<<j<<endl;    }    cout<<"i="<<i<<endl;    return 0;}

输出正常

i=6j=7i=5

再变一下

#include<iostream>using namespace std;int i;          //std 中的全局变量namespace a{    int j;      //a 中的全局变量}int main(){    i=5;    a::j=6;    {        using namespace a;        int i;        i=7;        cout<<"i="<<i<<endl;        cout<<"j="<<j<<endl;    }    cout<<"i="<<i<<endl;    return 0;}

输出

i=7j=6i=5
0 0
原创粉丝点击