Ho lavorato in C per così tanto tempo che il fatto che i compilatori aggiungano tipicamente un trattino all'inizio di uno extern
è appena compreso ... Tuttavia, another SO question today mi ha fatto riflettere sul motivo reale per cui viene aggiunto il carattere di sottolineatura. A sostiene che una ragione è:Perché i compilatori C anteporre i caratteri di sottolineatura ai nomi esterni?
era pratica comune per i compilatori C anteporre un leader sottolineano a tutti gli identificatori di programma portata esterni per evitare scontri con i contributi di supporto per la lingua runtime
Penso che ci sia almeno un nocciolo di verità a questo, ma sembra anche che non risponda davvero alla domanda, poiché se il trattino di sottolineatura viene aggiunto a tutti gli esterni non sarà di grande aiuto nella prevenzione degli scontri.
Qualcuno ha una buona informazione sulla base logica del trattino basso principale?
è la parte di sottolineatura aggiunta del motivo per cui la chiamata di sistema Unix creat()
non termina con una 'e'? Ho sentito che i primi linker su alcune piattaforme avevano un limite di 6 caratteri per i nomi. Se questo è il caso, quindi la preposizione di un carattere di sottolineatura a nomi esterni sembrerebbe essere un'idea pazzesca (ora ho solo 5 personaggi con cui giocare ...).
Va notato che questo comportamento non viene praticato sui sistemi ELF moderni. Apparentemente era comune nelle piattaforme di Aout/Coff. –
Perché Clang fa su OS X? come posso spegnerlo? – MarcusJ