6.62.10 Директивы переименования символов ¶
GCC поддерживает директиву #pragma, которая изменяет имя, используемое в ассемблере для данного объявления. Хотя эта директива поддерживается на всех платформах, она предназначена в первую очередь для обеспечения совместимости с заголовками систем Solaris. Этот эффект также может быть достигнут с помощью расширения меток asm (см. Управление именами, используемыми в коде ассемблера).
redefine_extname oldname newname-
Эта директива присваивает C-функции oldname ассемблерный символ newname. Макрос препроцессора
__PRAGMA_REDEFINE_EXTNAMEопределён, если эта директива доступна (в настоящее время на всех платформах).
Эта директива и расширение меток asm взаимодействуют сложным образом. Вот некоторые особые случаи, о которых следует знать:
- Эта директива применяется только к объявлениям с внешней связью. Функция меток
asmтакого ограничения не имеет. - В C++, эта директива применяется только к объявлениям со связью «C». Опять же, метки
asmтакого ограничения не имеют. - Если один из способов изменения имени ассемблерного символа объявления применяется к объявлению, имя ассемблерного символа которого уже определено (либо предыдущим применением одной из этих функций, либо потому, что компилятор нуждался в ассемблерном имени для генерации кода), и новое имя отличается, выводится предупреждение, и имя не меняется.
- oldname, используемое в
#pragma redefine_extname, всегда является именем в стиле C.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/Symbol-Renaming-Pragmas.html