某文件中全局变量可见性(visibility)的获得:

  • (1)#include 对方的头文件
  • (2)extern 关键字

在 A.cpp 文件中引用 B.cpp 中的全局变量

B.cpp 中的全局变量是全局可见,但须使用 extern 显示声明。

显然是不可以在 A.cpp 中对 B.cpp 进行直接包含的(#include "b.cpp"),解决方案是在 A.hpp 文件中使用 extern 关键字,A.hpp 头文件架起了 A.cpp 和 B.cpp 的桥梁。

共如下的三个文件:

  • (1)A.hpp
  • (2)A.cpp
  • (3)B.cpp
// B.cpp
double pi = 3.14159265;
char str[] = "hello";// A.hpp
extern double pi;
extern char str[];// A.cpp
#include "A.hpp"
int main(int, char**)
{cout << pi << ", " << str << endl;return 0;
};

当然也可简单化处理,直接在 A.cpp 文件中使用 extern 关键字:

// B.cpp
doubel pi = 3.14159265;
char str[] = "hello";// 只要不是在类等结构中,都属于全局变量// 要深刻理解C/C++中的全局变量呀
// A.cpp
extern double pi;
extern char str[];int main(int, char**)
{cout << pi << ", " << str << endl;return 0;
};

补充

// B.cpp
int a = 5;// A.cppp
extern int a = 6;// 错误// 这里就不再是声明,而是定义了// 显然链接时会发生错误,int a; 已在 A.obj 文件中定义 

[面试] C/C++ 语法(五) —— extern相关推荐

  1. JAVA面试常考系列五

    转载自 JAVA面试常考系列五 题目一 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序 ...

  2. Python基础语法(五)—常用模块和模块的安装和导入

    Python基础语法(五)-常用模块的使用和模块的安装和导入,本文介绍的Python模块有:os.sys.time.datetime.random.pickle.json.hashlib.shutil ...

  3. Pocket英语语法---五、形式主语是怎么回事

    Pocket英语语法---五.形式主语是怎么回事 一.总结 一句话总结:1.to不定式或动名词可以在主语的位置上,但一般用it代替它做形式主语.这种情况it叫形式主语. It's a great ho ...

  4. “睡服”面试官系列第五篇之proxy(建议收藏学习)

    目录 1. 概述 2. Proxy 实例的方法 2.1get() 2.2set() 2.3apply() 2.4has() 2.5construct() 2.7deleteProperty() 2.8 ...

  5. python爬虫工程师面试自我介绍范文_计算机工程师面试自我介绍范文五篇

    自我介绍在面试中是必然要过的一关,自我介绍得好不好也直接影响到面试的效果,那么该如何做到与众不同又精彩呢?下面是小编给大家搜集的范文五篇,希望有帮助到大家. 计算机工程师面试自我介绍(一) 面试官您好 ...

  6. 大数据面试总结《十五》--人事面试技巧总结

    一定不要将公司的工作当作负担,一定要做好并且学到东西,这才是你下一次跳槽能够展示的东西,所以在公司工作,你拿着工资,而不只是在为公司打工,而是为自己的未来进行修炼,一定要有这方面的意识. 总之,面试的 ...

  7. 安卓面试易考题(五)

    安卓面试易备题(五) 这是我整理的安卓面试资料的最后一部分,相信前面的大家都学习的差不多了,希望我们都能找到一份自己想要的工作,一起加油! 面试题一:android中的动画有哪几类,它们的特点和区别是 ...

  8. 超硬核!我统计了BAT笔试面试出现频率最高的五道题,学会了总能碰到一道

    所以说不要怕算法,简单的题反而出现的频率最高,不一定非要写个几百道才面试 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数 ...

  9. 一起学习C语言:C语言基本语法(五)

    上一篇 <一起学习C语言:C语言基本语法(四)> 中,我们了解了位运算符的语法和不同的应用场景中的选择.本篇文章中,我们分析switch语句,并通过几个示例分析break.#define和 ...

最新文章

  1. 计算机名称改变之后,HOUDINI Server 连接不上的解决办法
  2. sdut-oj-4205-寻找关键点
  3. 编译安装samba-4.85
  4. [转]jQuery选择器总结
  5. 推荐算法炼丹笔记:推荐系统采样评估指标及线上线下一致性问题
  6. 工业机器人电路图讲解话术_6张经典电路图分析助你进阶高级电工,你都会了吗?...
  7. ctsc2009 移民站选址
  8. C#异步编程-------异步编程模型(APM)
  9. Bootstrap3 列表元素的样式
  10. 进化计算-遗传算法之史上最全选择策略
  11. 树莓派ONVIF推流做网络摄像头
  12. 开源或免费虚拟主机管理系统
  13. 搭档之家|打造信息交互平台,推进合作新发展
  14. QT项目之键盘控制光标移动
  15. 【python报错总结】pandas打开Excel文件失败
  16. python类似于countif_可替代COUNTIF和SUMIF的函数,原来sumproduct函数这么有用!
  17. jQuery-动画效果
  18. codesign想要访问您的钥匙串中的密钥
  19. 问渠那得清如许?为有源头活水来。——java面向对象的思想
  20. 电源常识-纹波-EMI

热门文章

  1. Android中service的生命周期
  2. 自学html多久能找到工作,学web前端需要多久? 自学多长时间能找到工作?
  3. sql 拆解函数_在SQL Server数据库中拆分字符串函数
  4. 面包屑php源码,自己写的面包屑导航
  5. php解析markdown前端渲染,Vuejs使用 vue-markdown 来渲染评论方法
  6. php mysql查询中文乱码_解决php mysql查询插入中文乱码问题_PHP教程
  7. 剑指offer面试题36. 二叉搜索树与双向链表(中序遍历)(递归)
  8. Keras——用Keras搭建线性回归神经网络
  9. DeepStream参数配置之sink
  10. 机器视觉牛人及其相关领域分类科普