//main.cpp
#include<iostream>
#include<stdio.h>
#include"a.h"
using namespace b;
int main()
{
a::c1(); //调用的是命名空间a里的函数
c1();//因为用了using namespace b 所以可以省略 b::
printf("%d\n", a::a);
system("pause");
return 0;
}
/*
命名空间的说明:
1:为了防止名称的冲突,假如有两个或多个相同的类名,函数名,变量名,那就可以把他们定义在不同的命名空间下
2:访问命名空间里的实体,调用形式为:命名空间名::实体名
3: ::可以理解为作用域符
*/
//a.cpp
#include<stdio.h>
namespace a
{
int a = 3;
void c1()
{
printf("a-c1\n");
}
void c2()
{
printf("a-c2\n");
}
}
/*在前面已经定义了命名空间a的前提下,再次命名也是可以的,相当于打开
a往里添加新的实体不过要在主函数里调用他们,得先在.h文件里添加声明*/
namespace a
{
int b = 3;
void c3()
{
printf("a-c1\n");
}
void c4()
{
printf("a-c2\n");
}
}
namespace b
{
void c1()
{
printf("b-c1\n");
}
void c2()
{
printf("b-c2\n");
}
}
//a.h
#ifndef a_h
#define a_h
namespace a
{
extern int a;
//extern int b;
void c1();
void c2();
}
namespace b
{
void c1();
void c2();
}
#endif // !1