Spec-Zone.ru › GCC 6

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-6.5.0/gcc/Function-Attributes.html

Spec-Zone.ru

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