Spec-Zone.ru › GCC 15

6.5.10 Директивы переименования символов

GCC поддерживает директиву #pragma, которая изменяет имя, используемое в ассемблерном коде для заданного объявления. Эта директива поддерживается на всех платформах, но предназначена в первую очередь для обеспечения совместимости с системными заголовочными файлами Solaris. Того же эффекта можно добиться с помощью расширения меток asm (см. Управление именами, используемыми в ассемблерном коде).

redefine_extname oldname newname

Эта директива присваивает функции C oldname ассемблерный символ newname. Макрос препроцессора __PRAGMA_REDEFINE_EXTNAME определяется, если эта директива доступна (в настоящее время — на всех платформах).

Эта директива и расширение меток asm взаимодействуют сложным образом. Ниже приведены некоторые особые случаи, о которых следует знать:

  1. Эта директива без уведомления применяется только к объявлениям с внешним связыванием. На возможность использования меток asm это ограничение не распространяется.
  2. В C++ эта директива без уведомления применяется только к объявлениям со связыванием «C». И на метки asm это ограничение не распространяется.
  3. Если один из способов изменения ассемблерного имени объявления применяется к объявлению, ассемблерное имя которого уже было определено (либо при предыдущем использовании одной из этих возможностей, либо потому, что компилятору потребовалось это имя для генерации кода), и новое имя отличается от прежнего, выдается предупреждение, а имя не изменяется.
  4. Имя 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API