文档章节

C/C++多个源文件访问同一全局变量

o
 osc_g8254g7s
发布于 2019/08/19 23:27
字数 366
阅读 13
收藏 0
c++

精选30+云产品,助力企业轻松上云!>>>

  正确的实现方法是:在其它文件都引用的头文件中用extern关键字声明一个链接属性为external的全局变量,并在对应的源文件中定义该变量。然后在需要使用该变量的源文件中用extern关键字声明该全局变量,这样就能够在不同的言文件中共享全局变量了。

  例如,有三个源文件file1.cpp、file2.cpp和file3.cpp需要共享一个全局变量a,正确的方法是:在头文件file1.h中声明全局变量a(注:省略此声明也可以通过编译,但是此声明表明了全局变量定义的位置,增加代码可读性):

  

  在源文件file1.cpp中定义全局变量a(注:也可以在其它源文件中定义,在此定义增加代码可读性):

  

  分别在使用到变量a的源文件file2.cpp和file3.cpp中对其进行声明:

  

  

  需要注意的是:链接属性为external的全局变量可以声明多次,但只能定义一次。而且,不能够将全局变量定义在头文件中,否在会因为头文件被多次引用而造成变量多次定义,进而导致链接失败。例如将全局变量定义在头文件file1.h中:

  

  将产生如下的链接错误:

  

  

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

2020-07-03:有1亿个数字,其中有2个是重复的,快速找到它,时间和空间要最优

福哥答案2020-07-03: 1.双重遍历。 时间复杂度是O(N^2)。 2.排序。 采用外部排序。时间复杂度是O(NlogN)。 3.遍历加哈希存储。 空间换时间,时间复杂度是O(N),空间复杂度是O(N)。这种方法适...

osc_ix000whh
21分钟前
17
0
O2OA开源免费开发平台:在O2门户页面中使用React(三)

在前面的章节中,我们介绍了两种在O2OA中使用React开发应用的方式,已经可以满足绝大多数的情况了。如果您考虑完全脱离O2的web服务器,自己搭建web服务器,那就请阅读本章。   我们还是使用...

O2OA企业信息化平台
21分钟前
21
0
harbor 2.0 搭建docker私有仓库

harbor Harbor 是一个CNCF基金会托管的开源的可信的云原生docker registry项目,可以用于存储、签名、扫描镜像内容,Harbor 通过添加一些常用的功能如安全性、身份权限管理等来扩展 docker r...

osc_l7zl78wt
23分钟前
20
0
Java并发编程(06):Lock机制下API用法详解

本文源码:GitHub·点这里 || GitEE·点这里 一、Lock体系结构 1、基础接口简介 Lock加锁相关结构中涉及两个使用广泛的基础API:ReentrantLock类和Condition接口,基本关系如下: Lock接口 ...

osc_kiub62pt
24分钟前
27
0
DNS存在的问题

1、域名缓存问题 本地做一个缓存,直接返回缓存数据。可能会导致全局负载均衡失败,因为上次进行的缓存,不一定是这次离客户最近的地方,可能会绕远路。 2、域名转发问题 如果是A运营商将解析...

mind-blowing
25分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部