必须在模块里面 extern
声明
在一个 cpp 文件中, 一个namespace 可以多次定义,最后合并,使用 using namespace A
这种引入方式的话,使用的时候可以用所有 A 中的数据
多个 cpp 文件的话,不能会自动合并相同的 名字空间,(但是匿名的名字空间不会合并)所以不能重复定义
namespace A {
int a = 0;
void fun();
}
using A::a;
namespace A {
int b = 1;
}
int main()
{
std:: cout << b <<std:: endl;
}
如果是上面的写法的话,不能使用没有引入的名字空间里面的变量和函数
改成下面的就是对的
namespace A {
int a = 0;
void fun();
}
using A::a;
namespace A {
int b = 1;
}
using A::b;
int main()
{
std:: cout << b <<std:: endl;
}
namespace A {
int a = 0;
void fun();
}
using namespace A;
int a = 1;
int main()
{
std:: cout << a <<std:: endl; // 这个写法是错误的
std::cout << ::a << std::endl; // 输出的是全局变量 a
std::cout << A::a << std::endl; // 输出的是 A 中的变量 a
}
要注意的是上面的情况,使用的时候要说明是调用哪一个