6.62.9 Символьные переименования с помощью директив
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-9.5.0/gcc/Symbol-Renaming-Pragmas.html