如果我们有一组模块(翻译单元)符号可以通过两种方式链接:
“本地”链接 - 给定的导出符号“a”可以链接到适当的模块 m1,而来自不同模块的其他给定符号“a”可以链接到其他适当的模块 m2。使用这种链接方式,即使两个模块使用相同的符号名称也不会发生冲突——它们只是不能链接到同一个模块
“全局”链接 - 所有符号名称在链接时都放在一个包中。它会造成符号空间污染并且没有必要(我认为它是 c 链接系统中的“设计错误”)
C 语言可能不会强加“全局”链接,但链接器会执行 AFAIK
希望这个问题是适当的。它是关于 c 语言的,很明显,“ C 语言是否强制采用全局链接方式? ”
//编辑
下面有人说C99强加了这一点。TNX 来回答。
第一个c标准也强加了这个吗?我对这里的原始 c 创建者的意图很好奇。(正如我所说,我认为全局链接在 c 语言中是一个糟糕的选择)