6.64.9 Предикаты переименования символов
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-14.2.0/gcc/Symbol_002dRenaming-Pragmas.html