6.4.3 Указание атрибутов типов
С помощью атрибутов можно задавать различные специальные свойства типов. Некоторые атрибуты типов применяются только к типам структур и объединений, а в C++ — также к типам классов; другие можно применять к любому типу, определённому с помощью объявления typedef. Если не указано иное, одинаковые ограничения и эффекты применяются к атрибутам независимо от того, является ли тип тривиальной структурой или классом C++ с пользовательскими конструкторами, деструкторами или оператором присваивания копированием.
Другие атрибуты определены для функций (см. Объявление атрибутов функций), меток (см. Атрибуты меток), перечислителей (см. Атрибуты перечислителей), операторов (см. Атрибуты операторов) и переменных (см. Указание атрибутов переменных).
GCC предоставляет два способа указания атрибутов: традиционный синтаксис GNU с аннотациями ‘__attribute__ ((...))’ и более новый стандартный синтаксис C и C++ с использованием ‘[[...]]’ и префикса ‘gnu::’ в именах атрибутов. Обратите внимание: точные правила размещения атрибутов в исходном коде различаются в зависимости от используемого синтаксиса. Подробности см. в разделе Синтаксис атрибутов.
Атрибуты типов можно указывать в объявлении или определении типа enum, struct или union, размещая их непосредственно после ключевого слова struct, union или enum. Их также можно размещать сразу после закрывающей фигурной скобки определения, однако такой вариант менее предпочтителен, поскольку логически тип должен быть полностью определён к закрывающей скобке. Атрибуты типов также можно включать в объявление typedef.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Type-Attributes.html