6.62.10 Символьные прагмы переименования
GCC поддерживает директиву #pragma , которая изменяет имя, используемое в ассемблере для данного объявления. Хотя эта прагма поддерживается на всех платформах, она в первую очередь предназначена для обеспечения совместимости с заголовками системы Solaris. Этот эффект также можно достичь с помощью расширения меток asm (см. Метки 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-12.2.0/gcc/Symbol-Renaming-Pragmas.html