Spec-Zone.ru › GCC 6

6.61.9 Предикаты переименования символов

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

redefine_extname oldname newname

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

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

  1. Этот предикат молча применяется только к объявлениям с внешней связью. Метки ассемблера не имеют этого ограничения.
  2. В C++, этот предикат молча применяется только к объявлениям со связью "C". Опять же, метки ассемблера не имеют этого ограничения.
  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-6.5.0/gcc/Symbol-Renaming-Pragmas.html

Spec-Zone.ru

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