外部链接性和内部链接性

知识点:外部连接性与内部连接性

// f1 cpp文件
	int g = 1static int f = 2;
	int fo(){
		static h = 3;
		...
	}
//f2 cpp文件
//不包含f1的头文件下
	extern int g;	//合法
	extern int f;	//不合法
	extern int h;    //不合法

连接性与声明周期

变量 g 、f 、h 均为静态持续变量,生命周期均在整个程序运行期间;
作用域:使用范围
链接性:可否被外部文件链接
  • g:链接性为外部,作用域为整个cpp文件(extern可以)
  • f:链接性为内部,作用域为整个cpp文件 (无法extern)
  • h:链接性为无,作用域为局部(无法extern)

//****************************************************************
以上均为不使用.h文件的情况

当使用.H文件时,

//f1 h文件
	extern int g;    //只需要声明
	static int f = 2;   //定义直接迁移过来
	
// f1 cpp文件
	int g = 1int fo(){
		static h = 3;
		...
	}

//********************************************************
//f2 h文件
#include f1.h   //包含f1的头文件即可

//f2 cpp文件
//含f1的头文件下
	g = 2;	//合法  直接使用
	f = 3;	//合法  直接使用

ps:

const 关键字修饰的变量,自动认为被static修饰
若想覆盖const的内部链接性,必须在定义的时候 附加:

// cpp文件
extern const int g = 1;

在使用的时候,与外部链接的静态变量一样,需要声明:

// .h文件
extern int g;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值