Название украшения в т
Есть ли в стандартном мандате оформление имени?
Насколько я знаю, большинство (все?) Соответствующих реализаций добавляют префикс подчеркивания к имени каждого экспортируемого символа. Это гарантировано C, POSIX или другим стандартом?
1 ответ
Я не уверен насчет "стандарта", но префикс подчеркивания, кажется, является очень распространенным соглашением 1970-х годов. По какой причине имена функций префиксируются компилятором с подчеркиванием?:
В то время, когда UNIX был переписан на C примерно в 1974 году, его авторы уже имели обширные библиотеки на языке ассемблера, и было проще манипулировать именами нового C и C-совместимого кода, чем вернуться назад и исправить весь существующий код.
Это необходимо для имен C, если вы хотите взаимодействовать с компиляторами Microsoft в Windows (только для win32; win64 не использует декорирование, поскольку имеет только одно стандартное соглашение о вызовах).
https://docs.microsoft.com/en-us/cpp/build/reference/decorated-names
См. Также: Почему компиляторы C добавляют подчеркивания к внешним именам?