Spec-Zone.ru › GCC 7

6.31 Объявление атрибутов функций

В GNU C вы можете использовать атрибуты функций, чтобы объявить определённые вещи о функциях, вызываемых в вашей программе, что поможет компилятору оптимизировать вызовы и более тщательно проверить ваш код. Например, вы можете использовать атрибуты, чтобы объявить, что функция никогда не возвращает (noreturn), возвращает значение, зависящее только от её аргументов (pure), или имеет printf-стилевые аргументы (format).

Вы также можете использовать атрибуты для управления размещением памяти, параметрами генерации кода или соглашениями о вызовах/возвратах внутри аннотируемой функции. Многие из этих атрибутов зависят от целевой платформы. Например, многие целевые платформы поддерживают атрибуты для определения функций обработчиков прерываний, которые обычно должны следовать специальным соглашениям об использовании регистров и возвращении.

Атрибуты функций вводятся с помощью ключевого слова __attribute__ в объявлении, за которым следует спецификация атрибута в двойных скобках. Вы можете указать несколько атрибутов в объявлении, разделяя их запятыми внутри двойных скобок или сразу после объявления атрибута добавив объявление другого атрибута. Смотрите Синтаксис атрибутов для точных правил синтаксиса и размещения атрибутов.

GCC также поддерживает атрибуты в объявлениях переменных (см. Атрибуты переменных), метках (см. Атрибуты меток), перечислениях (см. Атрибуты перечислений), операторах (см. Атрибуты операторов) и типах (см. Атрибуты типов).

Существует некоторое пересечение между целями атрибутов и директив (см. Директивы, поддерживаемые GCC). Было удобно использовать __attribute__ для естественного присоединения атрибутов к соответствующим объявлениям, в то время как #pragma полезно для совместимости с другими компиляторами или конструкциями, которые не являются естественной частью грамматики.

Помимо документированных здесь атрибутов, плагины GCC могут предоставлять свои собственные атрибуты.

• Общие атрибуты функций:
• Атрибуты функций AArch64:
• Атрибуты функций ARC:
• Атрибуты функций ARM:
• Атрибуты функций AVR:
• Атрибуты функций Blackfin:
• Атрибуты функций CR16:
• Атрибуты функций Epiphany:
• Атрибуты функций H8/300:
• Атрибуты функций IA-64:
• Атрибуты функций M32C:
• Атрибуты функций M32R/D:
• Атрибуты функций m68k:
• Атрибуты функций MCORE:
• Атрибуты функций MeP:
• Атрибуты функций MicroBlaze:
• Атрибуты функций Microsoft Windows:
• Атрибуты функций MIPS:
• Атрибуты функций MSP430:
• Атрибуты функций NDS32:
• Атрибуты функций Nios II:
• Атрибуты функций Nvidia PTX:
• Атрибуты функций PowerPC:
• Атрибуты функций RL78:
• Атрибуты функций RX:
• Атрибуты функций S/390:
• Атрибуты функций SH:
• Атрибуты функций SPU:
• Атрибуты функций Symbian OS:
• Атрибуты функций V850:
• Атрибуты функций Visium:
• Атрибуты функций x86:
• Атрибуты функций Xstormy16:

Далее: Атрибуты переменных, Предыдущее: Смешанные объявления, Вверх: Расширения C [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gcc/Function-Attributes.html

Spec-Zone.ru

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