Почему компиляторы C добавляют подчеркивания к внешним именам?

Я работал в C так долго, что тот факт, что компиляторы обычно добавляют подчеркивание в началеextern просто понял ... Впрочем,еще один вопрос сегодня Я задался вопросом об истинной причине, почему подчеркивание добавлено.статья в википедии утверждает, что причиной является:

Для компиляторов Си было обычной практикой ставить перед всеми внешними идентификаторами программ области видимости подчеркивание, чтобы предотвратить конфликты с вкладами из языковой поддержки времени выполнения.

Я думаю, что по крайней мере в этом есть доля правды, но, похоже, на самом деле нет ответа на этот вопрос, поскольку добавление подчеркивания ко всем внешним элементам не сильно поможет в предотвращении столкновений.

Есть ли у кого-нибудь хорошая информация об обосновании ведущих подчеркивания?

Является ли добавленное подчеркивание одной из причин того, что Unixcreat() системный вызов не заканчивается на «е»? Я слышал, что ранние компоновщики на некоторых платформах имели ограничение в 6 символов для имен. Если это так, то добавление подчеркивания к внешним именам может показаться совершенно безумной идеей (теперь у меня есть только 5 символов, с которыми можно поиграть ...).

Ответы на вопрос(5)

Ваш ответ на вопрос