6.31 Объявление атрибутов функций
В GNU C вы можете использовать атрибуты функций для объявления определённых свойств функций, вызываемых в вашей программе, что помогает компилятору оптимизировать вызовы и более тщательно проверять код. Например, вы можете использовать атрибуты для объявления того, что функция никогда не возвращает значение (noreturn), возвращает значение, зависящее только от своих аргументов (pure), или имеет аргументы типа printf (format).
Вы также можете использовать атрибуты для управления размещением памяти, опциями генерации кода или соглашениями о вызове/возврате внутри аннотируемой функции. Многие из этих атрибутов зависят от целевой платформы. Например, многие платформы поддерживают атрибуты для определения функций обработчиков прерываний, которые, как правило, должны следовать специальным соглашениям использования регистров и возврата.
Атрибуты функций вводятся ключевым словом __attribute__ в объявлении, за которым следует спецификация атрибута в двойных скобках. Вы можете указать несколько атрибутов в объявлении, разделяя их запятыми внутри двойных скобок или сразу после объявления одного атрибута, объявив другой. См. Синтаксис атрибутов для точных правил синтаксиса и размещения атрибутов. Совместимые спецификации атрибутов в различных объявлениях одной и той же функции объединяются. Спецификация атрибута, которая несовместима с атрибутами, уже применёнными к объявлению той же функции, игнорируется с предупреждением.
GCC также поддерживает атрибуты в объявлениях переменных (см. Атрибуты переменных), метках (см. Атрибуты меток), перечислениях (см. Атрибуты перечислений), операторах (см. Атрибуты операторов) и типах (см. Атрибуты типов).
Существует некоторое перекрытие между назначением атрибутов и директив (см. Директивы, принимаемые GCC). Было удобно использовать __attribute__ для естественного присоединения атрибутов к соответствующим объявлениям, в то время как #pragma используется для совместимости с другими компиляторами или конструкциями, которые не являются естественной частью грамматики.
Помимо описанных здесь атрибутов, плагины GCC могут предоставлять свои собственные атрибуты.
Далее: Атрибуты переменных, Предыдущее: Смешанные объявления, Вверх: Расширения C [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-8.5.0/gcc/Function-Attributes.html