He estado trabajando en C durante tanto tiempo que el hecho de que los compiladores normalmente agreguen un guión bajo al comienzo de extern
se entiende ... Sin embargo, another SO question today me hizo preguntarme sobre la verdadera razón por la cual se agrega el subrayado. A afirmaciones de que una razón es:¿Por qué los compiladores de C anteponen los guiones bajos a los nombres externos?
era una práctica común que los compiladores de C para anteponer un subrayado inicial a todos los identificadores de programa alcance externos para evitar enfrentamientos con las contribuciones de apoyo en el idioma de tiempo de ejecución
Creo que hay al menos un grano de verdad a esto, pero también parece que no responde realmente la pregunta, ya que si el guión bajo se agrega a todos los externos, no ayudará mucho a prevenir los enfrentamientos.
¿Alguien tiene buena información sobre la justificación del subrayado inicial?
¿Es el subrayado agregado parte del motivo por el que la llamada al sistema Unix creat()
no termina con una 'e'? He oído que los primeros enlazadores en algunas plataformas tenían un límite de 6 caracteres para los nombres. Si ese es el caso, anteponer un guión bajo a los nombres externos parecería una idea muy loca (ahora solo tengo 5 personajes para jugar ...).
Debe tenerse en cuenta que este comportamiento no se practica en los sistemas modernos de ELF. Era común en las plataformas aout/coff, aparentemente. –
¿Por qué Clang lo hace en OS X? ¿Cómo puedo cerrarlo? – MarcusJ