Здравствуйте, sergey2b, Вы писали:
S>я нашел один вариант __attribute__((noreturn)) S>но он для статических функцию
Можно попробовать собрать единицу трансляции в режиме, когда все функции не раскладываются по отдельным секциям, а кладутся в одну. При этом в единице трансляции должно быть что-то, что гарантированно используется. Такая опция есть у всех известных мне компиляторов.
Другой вариант — ковырять компилер-специфик прагмы и прочие директивы.
Ты, как я понимаю, собираешь DLL/SO? Если так, то наверно надо явно указать, что ты хочешь это экспортировать. Для DLL это можно сделать. Для линупса с их SO-шками, в которых обычно торчит наружу всё, что есть — тут да, надо подумать. Можно попробовать замутить какие-0то зависимости, которые компилер/линкер не смогут разрулить, но это не точно.
Для экзешника вроде это мало имеет смысла, если ты конечно не собираешь экзешник, экспортирующий какие-то функции, которые кто-то собирается импортировать — например, зависимые от загружающего их экзешника DLLки.
ЗЫ А __attribute__((noreturn)) — это совсем из другой оперы, и то, что они сейчас линкуются безусловно — это просто баг/тупизна линкера, и на которую закладываться не стоит