extern关键字的作用是声明变量和函数为外部链接,即该变量或函数名在其它文件中可见。用其声明的变量或函数应该在别的文件或同一文件的其它地方定义。
例如语句:extern int a;
仅仅是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误。
通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数。
如果一个工程包含如下两个文件:
1.cpp如下: 2.cpp如下:
int x,y; extern int x,y;
extern void PrintHello(); void PrintHello()
void Func1() {
{ cout<<"hello!"<<endl;
x="123"; }
} void Func2()
int main() {
{ y="x"*10;
PrintHello(); }
......
}
在2.cpp中使用extern int x,y;只是声明了x,y这两个变量,它告诉编译器其后的变量已经在别的文件中说明,不再为它们分配内存。当两个文件都编译成为.obj后,连接时所有的外部变量和函数都得到统一,可以共享各自定义的全局变量和函数。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
Arteris推出全新Magillem Packaging解决方案应对IP模块与芯粒的硅设计复用挑战
电子游戏将成教学工具 游戏助师生一臂之力
基于Arduino的双模科学计算器设计
村田顽童爬坡
MSP430 汇编程序设计 (三)
从弃儿变成香饽饽 实达电脑拉拢长城旧渠道
使用NE12定时器和LDR的555V自动锚灯电路
带截止定时器的自动夜灯设计
西班牙停电的后果仍在继续
诺基亚232型手机充电器电路图
MSP430 汇编程序设计 (一)
高效应急灯电源电路
PHILIPS LPC900微控器的单电池电源
村田顽童演示控制姿势行走
东芝推出智能电机控制驱动IC“SmartMCD™”系列的第二款新品
PHILIPS LPC9xx微控器的I2C应用
“流言”蠕虫病毒现身 可能引起网络瘫痪
怎么把帖子从一个版转到另一版?
MSP430 汇编程序设计 (二)
DIY带电路和PCB的开源GSM+GPS模块
工业战略推动英国科技发展
PHILIPS LPC9xx UART 实例程序
职称制度改革:广东工人农民皆可申报职称
爱立信788旅行式充电器电路图
SPN4096A充电器电路图
PHILIPS LPC9xx Measure Datalogger 实...
罗姆的SiC MOSFET应用于丰田全新纯电车型“bZ5”
摩托车充电器电路图
PHILIPS LPC9xx Oscillator Options 实...
使用Arduino和EMG的错误姿势和肌肉拉伤监测器,带实时蓝牙警报