首先让我们定义一下:范围:标识符的范围是程序的一部分,可以直接访问标识符。在C语言中,所有标识符都在词法(或静态)范围内。链接:链接描述了名称在整个程序或一个翻译单元中如何引用或不引用同一实体。以上听起来与Scope相似,但事实并非如此。要了解上述含义,让我们深入研究编译过程。翻译单元:翻译单元是一个包含源代码,头文件和其他依赖项的文件。所有这些源都组合在一个文件中,因为它们用于产生一个单个可执行对象。以有意义的方式将源链接在一起很重要。例如,编译器应该知道printf定义位于stdio头文件中。在C和C ++,即由多个源代码文件中的程序被编译一次一个。在编译过程之前,可以通过变量的作用域来描述变量。只有在链接过程开始时,链接属性才起作用。因此,范围是由编译器处理的属性,而链接是由链接器处理的属性。链接器在编译过程的链接阶段将资源链接在一起。链接器是一个程序,它将多个机器代码文件作为输入,并生成可执行的目标代码。它解析符号(即,获取符号的定义,例如“ +”等。)并将对象排列在地址空间中。链接是一个属性,它描述链接器应如何链接变量。变量应该可供另一个文件使用吗?应该只在声明的文件中使用变量吗?两者都是由链接决定的。因此,链接使您可以将每个文件的名称耦合在一起,范围决定了这些名称的可见性。有两种类型的链接:1.内部链接:实现内部链接的标识符无法在声明它的翻译单元外部访问。该单元内的任何标识符都可以访问具有内部链接的标识符。它由关键字实现static。内部链接的标识符存储在RAM的初始化或未初始化段中。(注意: static 在引用范围方面也有含义,但此处不做讨论)。一些例子:
版权免责声明: 本站内容部分来源于网络,请自行鉴定真假。如有侵权,违法,恶意广告,虚假欺骗行为等以上问题联系我们删除。
本文地址:https://www.16757.com/article/1800.html