1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C++中为什么不能将全局变量定义在头文件中?

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

时间:2022-07-07 00:39:07

相关推荐

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

一、什么是全局变量?

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

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

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

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

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

三、全局变量放在头文件中会出现哪些问题?

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

四、总结

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。