C语言中extern的用法

来源:互联网 发布:淘宝a0图纸扫描仪 编辑:程序博客网 时间:2024/06/07 10:44
C语言中的Extern用法网上有很多帖子问C语言中Extern的用法,而且回答的详细程度各尽不同. 所以我就像写一篇博文来谈谈我对extern的看法,不一定十分恰当,只当大家共勉.在具体到Extern的用法之前,有两个概念必须要能分清楚:声明(Declaration)和定义(Definition)之间的区别. 声明一个变量只是宣布这个变量的属性,也就是说告诉编译器这个变量时什么类型(如int, long, string 等). 而定义一个变量不仅是声明了变量的属性,同时也告诉编译器给变量分配相应的存储空间. 例如://test.cint value; //定义一个变量名为value,并分配相应存储空间double arr[MAX_INTEGER];//定义数组变量名为arr,并分配相应的存储空间extern int value1;//声明变量名为value1且这个变量在其他文件中定义的,没有分配存储空间extern double arr1[MAX_INTEGER]//…同上int main(){….}理解了声明和定义的区别以后,我们开始进入今天的主题Extern的用法, 首先我们看看Extern修饰符的作用是什么? Extern作用其实很简单,就是允许你程序的一个模块调用另外一个模块里定义的全局变量或函数. 这话听起来有点拗口,简单点就是你在一个A.cpp文件里面定义了一个全局变量X,但是你B.cpp想引用这个X,这时用Extern修饰符就能办到了. 通常情况下你会把这个全局变量定义在头文件里.这样可能性更强些.Extern 适用于变量和函数下面我们就看个例子,这个例子记得有人写过,但是,我觉得他写的测试例子不太合适,所以就重写一下。//Create a ext.hExtern int value;//create a ext.cpp#include “stdio.h”#include “ext.h”Int value = 5;Void printExt(){Printf(“ext %d\n”, value);}//create test.cpp#include “stdio.h”#include “ext.h”Extern void printExt();int main(void){value =3printf(“\n test %d\n”,value);printExt();printf(“\n test %d\n”, value)}打印出来的结果,大家应该都能猜到是:Test 3Ext 3Test 3


0 0
原创粉丝点击