6.5.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-15.3.0/gcc/Symbol_002dRenaming-Pragmas.html