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