C语言中extern的用法

举报
chenyu 发表于 2021/07/26 23:17:58 2021/07/26
【摘要】 C语言中的Extern用法网上有很多帖子问C语言中Extern的用法,而且回答的详细程度各尽不同. 所以我就像写一篇博文来谈谈我对extern的看法,不一定十分恰当,只当大家共勉.在具体到Extern的用法之前,有两个概念必须要能分清楚:声明(Declaration)和定义(Definition)之间的区别. 声明一个变量只是宣布这个变量的属性,也就是说告诉编译器这个变量时什...

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


文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/52540623

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。