Spec-Zone.ru › GCC 8

6.34 Атрибуты меток

GCC позволяет устанавливать атрибуты на метки C. Подробную информацию о синтаксисе атрибутов см. в разделе Синтаксис атрибутов. Другие атрибуты доступны для функций (см. Атрибуты функций), переменных (см. Атрибуты переменных), перечислителей (см. Атрибуты перечислителей), операторов (см. Атрибуты операторов) и для типов (см. Атрибуты типов).

В этом примере используется атрибут метки cold для указания того, что ветвь ErrorHandling маловероятна, и что метка ErrorHandling не используется:

asm goto ("some asm" : : : : NoError);

/* This branch (the fall-through from the asm) is less commonly used */
ErrorHandling: 
   __attribute__((cold, unused)); /* Semi-colon is required here */
   printf("error\n");
   return 0;

NoError:
   printf("no error\n");
   return 1;
unused

Эта функция предназначена для кода, сгенерированного программой, который может содержать неиспользуемые метки, но который компилируется с -Wall. Обычно ее не следует использовать в коде, написанном человеком, хотя она может быть полезна в тех случаях, когда код, переходящий по метке, находится внутри #ifdef условного оператора.

hot

Атрибут hot для метки используется для того, чтобы сообщить компилятору, что путь, следующий за меткой, более вероятен, чем пути, которые не помечены таким образом. Этот атрибут используется в случаях, когда __builtin_expect не может быть использован, например, с вычисленным переходом или asm goto.

cold

Атрибут cold для меток используется для того, чтобы сообщить компилятору, что путь, следующий за меткой, маловероятен для выполнения. Этот атрибут используется в случаях, когда __builtin_expect не может быть использован, например, с вычисленным переходом или asm goto.

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

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

Spec-Zone.ru

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