《The C Book》中链接与对象类型等价的C版本及内部链接含义疑问
关于《The C Book》中C语言版本及链接术语的问题解答
一、加粗内容指代的C语言版本
你提到的加粗部分指向的是K&R C(1978年《C程序设计语言》第一版定义的C语言)及ANSI C标准化前的早期C方言。在ANSI C(C89/C90)正式出台之前,C语言没有统一的标准化规则,"internal(内部)"和"external(外部)"同时用来描述存储类属性和标识符的可见范围,二者概念高度重叠甚至等价,并没有明确区分"链接类型"和"对象类型"的边界。
二、早期internal linkage与现今含义的差异
早期K&R C里并没有明确的"linkage(链接)"这一标准化概念,不过static修饰的标识符(变量或函数)确实仅能在当前编译单元内访问,这一点和现今的internal linkage实际效果相似,但本质上有区别:
- 现今C标准(C89及之后)中,internal linkage是一个明确定义的链接类型:具有该链接的标识符,其作用域被严格限定在定义它的编译单元内,不同编译单元的同名标识符是完全独立的实体,和存储类属性是两个独立的概念维度。
- 而在K&R C中,并没有将"internal"作为独立的链接类型,而是将标识符的可见范围直接绑定到
static这个存储类关键字上,术语体系里没有区分"存储类"和"链接类型",这也是后来术语保留但含义分歧的原因。
内容的提问来源于stack exchange,提问作者user51462
相关产品推荐
相关产品推荐

