Warum stellen C-Compiler Unterstriche vor externe Namen?

Ich habe so lange in C gearbeitet, dass Compiler normalerweise einen Unterstrich an den Anfang eines @ setzeextern wird nur verstanden ... Allerdings eine andere SO Frage heute Ich habe mich gefragt, warum der Unterstrich wirklich hinzugefügt wurde. EIN Wikipedia-Artikel behauptet, dass ein Grund ist:

Es war gängige Praxis für C-Compiler, allen externen Bereichsprogramm-IDs einen führenden Unterstrich voranzustellen, um Konflikte mit Beiträgen der Laufzeitsprachenunterstützung zu vermeiden.

Ich denke, es gibt mindestens einen Kern der Wahrheit, aber es scheint auch, dass es die Frage nicht wirklich beantwortet, da, wenn der Unterstrich zu allen externen Elementen hinzugefügt wird, es nicht viel hilft, Zusammenstöße zu verhindern.

Hat jemand gute Informationen über die Gründe für den führenden Unterstrich?

Ist der hinzugefügte Unterstrich Teil des Grundes, dass das Unixcreat() Systemaufruf endet nicht mit einem 'e'? Ich habe gehört, dass frühe Linker auf einigen Plattformen ein Limit von 6 Zeichen für Namen hatten. Wenn dies der Fall ist, scheint es eine geradezu verrückte Idee zu sein, externen Namen einen Unterstrich voranzustellen (jetzt habe ich nur noch 5 Charaktere zum Spielen ...).

Antworten auf die Frage(5)

Ihre Antwort auf die Frage