C++中为什么不能将全局变量定义在头文件中?

本文详细介绍了C++中的全局变量,包括内部变量和外部变量的概念及区别。内部变量仅限于本源文件使用,而外部变量可在其他文件中通过extern引用。将全局变量置于头文件可能导致空间浪费和链接错误。最佳实践是将全局变量定义在实现文件(.cpp)中,外部变量则在头文件中用extern声明。
摘要由CSDN通过智能技术生成
一、什么是全局变量?

C++中全局变量一般指定义在函数体外的变量。

全局变量按可访问性可分为外部变量内部变量

二、内部变量和外部变量的定义

内部变量:使用了static关键字修饰的全局变量。它的可访问范围(作用域)被限定在本源文件所在的链接文件模块中,不能被其他文件模块引用。

外部变量:没有被static修饰的全局变量。其他文件模块可以通过extern关键字引用该全局变量并访问。

三、全局变量放在头文件中会出现哪些问题?
  • 问题一:对内部变量来讲,每个include该头文件的文件模块中都会单独为这个内部变量分配静态内存空间,这个空间是相对独立的,是一种空间的浪费,同时还失去全局变量访问一致性的问题,没有什么意义。如果这个头文件只被一个模块使用,对于这个文件模块来说应该没啥问题。
  • 问题二:对外部变量来讲,这个头文件被多个文件模块include的情况下,链接过程会报错,因为所有include和这个头文件的模块都会有这个全局变量。在这个头文件仅仅只被一个模块include的时候可以正常使用。
四、总结

全局变量只定义在实现文件中(.cpp)。

内部变量只在本文件模块内部使用,没啥好说的。

对外部变量可以在该模块头文件中使用extern关键字修饰一下,这样其他文件模块只要直接include该头文件就可以使用模块中的外部变量了。

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值