что делает __attribute__(__noreturn__) в си

Я нашёл в книге Linux API выражение

#define NORETURN __attribute__((__noreturn__))

может мне кто-то объяснить как это работает?


Ответы (1 шт):

Автор решения: KoVadim

Есть некоторые функции, с которых программа уже не возвращается. Например, abort или longjump. Такие функции обычно и помечены подобным атрибутом, что бы компилятор (а также и анализаторы кода) знали о этой особенности и не задавали лишних вопросов, а также могли чуточку оптимальное/правильнее написать код.

А Ваш дефайн - это распространённая практика - дело в том, что большинство таких атрибутов сильно зависят от компилятора. И что бы постоянно не писать кучу #ifdef, вводят вот такие "мета атрибуты", а уже система сборки (или в одном хедере) подставляют правильные значения для выбранного компилятора/среды.

→ Ссылка