1.命名空间与匿名空间

1、作用

解决开发过程中变量名冲突的问题
在这里插入图片描述

2、定义语法

  • 用户声明的名字空间定义以关键字 namespace 开头,后面是 名字空间的名字
  • 空间名:与变量的命名规则相同,只能由数字、字母、下划线组成,数字不能开头。
  • 注意:在没有被其它文件包含的情况下,命名空间中的成员只能在本文件中使用,即使其它文件也定义了相同名字的命名空间。但如果其它文件包含了本文件,则本文件中的命名空间中的成员可以在其它文件以 “命名空间::成员变量” 的格式被使用。
    //定义 
    namespace 空间名 
    { 
    	在该空间中的变量,函数,......... 
    };
    
    //例子:定义一个命名空间,里面包含变量 a b c 
    namespace XM 
    { 
    	int a; 
    	int b; 
    	int c;
    };
    

3、命名空间的成员使用

  1. 通过域操作符 :: 引用空间中的内容
    空间名::变量名
    //例子: 
    XM::a 
    XM::b 
    XM::c
    
  2. 通过using 把整个空间暴露出来
    using namespace 空间名
    
    //例子
    using namespace XM; 
    //提示:可以使用这种方式把 std 的空间暴露出来,后面使用 cout,cin,endl,cerr 就不需要添加 std::
    
  3. 只暴露空间中的某一成员
    using 空间名::成员名 
    //例子: 
    using XM::a; //只暴露XM 空间中的 a 成员
    

4、命名空间的嵌套

语法: 
    namespace 空间名1 
    { 
    	namespace 空间名2 
    	{ 
    		//继续不断的定义 
    		..... 
    	} 
    }
---------------------------------------- 
//例子:
    namespace TX 
    { 
    	namespace TX1 
    	{ 
    		namespace TX2 
    		{ 
    			int a=10086; 
    		} 
    	} 
    }

使用空间中的成员:
   1:利用域操作符号引用空间中的成员
   	TX::TX1::TX2::a
   	
   2.暴露
   	using namespace TX; 
   	using namespace TX1;
   	using namespace TX2;
   	
   3.暴露某一个成员
   	using TX::TX1::TX2::a;

5、匿名空间

5.1、作用

限制全局变量只能在当前文件中使用(功能与 静态全局变量 相似)

静态局部变量:
1.只能被初始化一次
2.会改变静态变量的生命周期,存放到数据段中
------------------------------------------------------------------
静态全局变量:
只能在当前文件中使用该全局变量

5.2、定义

 namespace //不写空间的名称他就是一个匿名空间 
 { 
 	//填写空间中的成员 , 变量,函数,类 ....... 
 }

例子: 定义一个匿名空间把全局变量限制在本文件中使用 
namespace 
{ 
	int a=100; 
	float b=3.14; 
}

6、命名空间的跨文件使用

1.把命名空间定义出来 
namespace TX 
{ 
	int a=10086; 
}

2.在使用该空间中的文件进行声明 
namespace TX 
{ 
	extern a; //声明该空间中的变量 a 是在外部定义的 
}

补充:C 和 C++ 的混合编程

当 c++ 程序使用 C 语言接口使用需要声明为外部 C 接口
extern "C" 
{ 
	//添加使用到的 C 语言接口头文件 
}
//extern "C" 在这里面的内容都采用 gcc 编译器进行编译不使用 g++
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值