C++存储链接性原理示例详解 |
您所在的位置:网站首页 › java练手小程序 › C++存储链接性原理示例详解 |
C++存储链接性原理示例详解
链接性 链接性是指名称在不同文件之间能否共享,而作用域是指名称在文件内部哪些范围可见。 这里的文件并非开发时创建的文件,而是将文件的 include 内容全部递归包含进来之后,形成的大文件。 这一点也是与Go等一些语言不同。在Go语言中,文件是按包(package)组织,所有依赖的包都需要直接或间接import进来。也就是从main开始递归import得到的就是我们依赖的所有文件。 但C++不同。C++源文件主要分.h 和 .cpp两种,一般我们都只会include .h文件,而不会include .cpp文件。因此,.cpp文件之间其实没有直接关联,需要通过cmakelist等方式告诉编译器,我们的程序涉及到哪些源文件。 而C++在编译时,会首先将include的文件内容全部递归包含进来,形成一个大的文件,这个大文件是一个编译单元,也就是上面链接性所说的文件。其实,C++的宏定义的可使用范围,也是在这个大文件内。 链接性有三种: 外部链接性:一个文件声明的名称可以在另一个文件中使用内部链接性:声明的名称只能在文件内使用无链接性:意味着只能在函数或代码块内使用自动类型变量都没有链接性,而静态类型变量可以有三种链接性。那么如何定义这三种链接性的静态变量呢? 外部链接性链接性为外部的变量也叫外部变量,也称全局变量。外部变量在函数外声明,不加static关键字。外部变量可以在所有文件使用。 对于函数来说,没有加inline和static关键字的函数,都具有外部链接性。 说到外部,可能会想到一个关键字:extern。这个关键字有什么用?实际上它是用来做引用声明。因为如果想使用其他文件中定义的外部变量,不能直接使用,而是要先进行引用声明,表示要引用这个外部变量,这里就需要用到关键字extern。例如: // file1.cpp int foo = 1; // file2.cpp extern int foo; // extern int foo = 1; WRONG cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |