モジュール (翻訳単位) のセットがある場合、シンボルは 2 つの方法でリンクできます。
「ローカル」リンク - エクスポートされた特定のシンボル「a」を適切なモジュール m1 にリンクし、別のモジュールからの他の特定のシンボル「a」を他の適切なモジュール m2 にリンクできます。このリンク方法では、2 つのモジュールが同じシンボル名を使用していても衝突はありません。同じモジュールにリンクしてはいけません。
「グローバル」リンク - リンク時にすべてのシンボル名が 1 つのバッグにスローされます。それはシンボル空間の汚染を引き起こし、それは必要ありません(私はそれをCリンクシステムの「設計上のバグ」と考えています)
C言語はおそらく「グローバル」リンクを強制しませんが、リンカはAFAIKを行います
質問が適切であることを願っています。それは c 言語に関するもので、「C 言語はリンクのグローバルな方法を強制するかどうか」が明確です。
//編集
C99がそれを課すと以下に述べました。答えはTNX。
最初のc標準もそれを課しましたか? ここでオリジナルのcクリエイターの意図について非常に興味があります。(私が言ったように、グローバルリンクはC言語では悪い選択だと考えています)