Spec-Zone.ru › GCC 10

Следующее: Структурно-распорядковые директивы, Предыдущее: Директивы Solaris, Наверх: Директивы, принимаемые GCC [Содержание][Индекс]

6.62.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-10.5.0/gcc/Symbol-Renaming-Pragmas.html

Spec-Zone.ru

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