Por que os compiladores C acrescentam sublinhados a nomes externos?

Estou trabalhando em C há tanto tempo que o fato de que os compiladores normalmente adicionam um sublinhado ao início de umextern é apenas entendido ... No entanto,outra pergunta SO hoje me fez pensar sobre o real motivo pelo qual o sublinhado é adicionado. UMAartigo da wikipedia afirma que um motivo é:

Era prática comum para os compiladores C anexar um sublinhado principal a todos os identificadores de programa de escopo externo para evitar conflitos com contribuições do suporte à linguagem de tempo de execução

Acho que há pelo menos um núcleo de verdade nisso, mas também parece que não responde realmente à pergunta, pois se o sublinhado for adicionado a todos os externos, não ajudará muito na prevenção de confrontos.

Alguém tem boas informações sobre a lógica do sublinhado principal?

O sublinhado adicionado é parte do motivo pelo qual o Unixcreat() chamada do sistema não termina com um 'e'? Ouvi dizer que os ligantes iniciais em algumas plataformas tinham um limite de 6 caracteres para nomes. Se for esse o caso, acrescentar um sublinhado a nomes externos pareceria uma ideia totalmente louca (agora só tenho 5 caracteres para brincar ...).

questionAnswers(5)

yourAnswerToTheQuestion