什么是链接属性,外部链接,内部链接,无链接详解

本文介绍了链接属性在程序编译过程中的重要性,详细阐述了无链接、内部链接和外部链接三种属性的区别。无链接标识符如局部变量在不同代码块中被视为独立实体;内部链接标识符在同一源文件内视为同一实体,不同文件则不同;外部链接标识符在所有源文件中表示同一实体。链接属性通过关键字extern和static进行修改,对于处理多文件程序中相同标识符的处理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么需要学习链接属性?

从原始代码生成可执行的目标文件需要经过—编码,预处理,编译,汇编,链接,执行等过程。在此处提及是为了让知识能够串联起来,了解什么是链接属性,为什么需要链接属性,链接属性的作用。

什么是链接属性?

链接属性就是在链接过程中的一些规定:工程的所有源文件被编译后,规定了标识符在多个文件中多次出现时,当做一个实体处理还是多个实体处理。

链接属性分为哪几种?

链接是标识符的一种属性,指明了标识符在某一位置是否属于可见的。

标识符有三种链接属性:外部链接,内部链接,无链接。

  • 1.无链接:没有链接属性的标识符会被当做单独的个体,该标识符多次被声明会被当做多个独立不同的实体。例如,多个代码块中声明的同一名字的局部变量或静态局部变量。

具有块作用域、函数作用域、函数原型作用域的变量都是无链接变量。
说明:局部变量,函数标签,函数形参。

  • 2.内部链接:同一源文件名字相同,具有内部链接的标识符会被当做同一实体。但是,不同源文件名字相同,具有内部链接的标识符会被当做不同实体。

例如,在代码块外声明的全局变量或静态全局变量。 具有文件作用域的变 量可以是外部链接变量或内部链接变量。
说明:全局变量被static修饰。

  • 3.外部链接:具有外部链接的标识符不管声明多少次,位于几个源文件中,都表示同一实体。 外部链接变量可以在多个文件程序中使用,内部链接变量只能在一个翻译单元中使用。

具有文件作用域的变量可以是外部链接变量或内部链接变量。
说明:没有static修饰的全局变量。

注意:
关键字extern和static用于在声明中修改标识符的链接属性。

链接属性的作用

如何处理在不同文件中出现的标识符,在源文件编译的过程中,如果有相同的标识符出现在几个不同的文件中,应该如何处理,到底是表示的是相同的实体对象还是不同的实体对象!(在博客-变量的定义与声明-中有相关的内容,可以对比学习)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiawucha159

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值