为什么 IMPORT 和 EXTERN 会有两种写法?
难度:★★本文首发于我的嵌入式技术号「OneChan」,未经授权禁止转载。上一篇文章我们讲了EXPORT和IMPORT的基本逻辑:一个往外送,一个往里拿。但细心的读者可能发现了——有些启动文件里用IMPORT,有些用EXTERN,还有些两个混着用。IMPORT SystemInit ; 有的用这个 EXTERN __heap_base ; 有的用这个这两个关键字都能引用外部符号,那为什么要有两个?它们到底差在哪?混用会出问题吗?今天我们就来剖析这个“最容易被忽略的差异”。它的背后,藏着链接器的两种符号解析策略,以及一个你可能从未意识到的运行时陷阱。一、先看现象:把 IMPORT 写成 EXTERN 会怎样?做一个实验。写一个最简启动文件:EXPORT Reset_Handler EXTERN SystemInit ; 故意用 EXTERN,不用 IMPORT EXTERN __main Reset_Handler PROC