Книга: Разработка приложений в среде Linux. Второе издание
5.2.4. Атрибуты
5.2.4. Атрибуты
Расширенное ключевое слово attribute
используется для передачи gcc
большего объема информации о функции, переменной или объявленном типе, чем это позволяет код С, соответствующий стандарту ANSI/ISO. Например, атрибут aligned
дает указание gcc о том, как именно выравнивать переменную или тип; атрибут packed
указывает на то, что заполнение использоваться не будет; noreturn
определяет то, что возврат из функции никогда не произойдет, что позволяет gcc
лучше оптимизироваться и избегать фиктивных предупреждений.
Атрибуты функции объявляются путем их добавления в объявление функции, например:
void die_die_die(int, char*) __attribute__ ((__noreturn__));
Объявление атрибута размещается между скобками и точкой с запятой и содержит ключевое слово attribute
, за которым следуют атрибуты в двойных круглых скобках. Если атрибутов много, следует использовать список, разделенный запятыми.
int printm(char*, ...)
__attribute__((const,
format(printf, 1, 2)));
В этом примере видно, что printm
не рассматривает никаких значений, кроме указанных, и не имеет побочных эффектов, относящихся к генерации кода (const
), printm указывает на то, что gcc
должен проверять аргументы функции так же, как и аргументы printf()
. Первый аргумент является форматирующей строкой, а второй — первым параметром замены (format
).
Некоторые атрибуты будут рассматриваться по мере дальнейшего изложения материала (например, во время описания сборки совместно используемых библиотек в главе 8). Исчерпывающую информацию по атрибутам можно найти в документации gcc
в формате Texinfo.
- 1.3.5. Методы и атрибуты
- 2. Домены и атрибуты
- 4. Виртуальные атрибуты
- У файла и каталога есть атрибуты (например: Скрытый, Только чтение). Как ими управлять из командной строки?
- 20.2.1. Атрибуты cookie: срок хранения и область видимости
- Атрибуты и свойства
- 9.1.1.1. После fork(): общие и различные атрибуты
- 9.1.4.4. Атрибуты, наследуемые exec()
- Дополнительные атрибуты файла
- Атрибуты процесса
- Атрибуты пользователя
- Атрибуты файлов и управление каталогами