Spec-Zone.ru › GCC 12

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

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-12.2.0/gcc/Label-Attributes.html

Spec-Zone.ru

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