#define SPRINTF(str, format, ...)\ char str[snprintf(0, 0, format, __VA_ARGS__)];\ sprintf(str, format, __VA_ARGS__);
@l29ah asprintf аллоцирует память в куче
да, я знаю, что этот код уязвим к атакам на переполнение стека
@chewbacca да не предсказуемый, нет такого понятия как «обычный» в макросах общего назначения
@chewbacca вот только ни один цомпилятор ещё не предоставляет <threads.h> из C11, чтобы это всё мутить
@plhk должно быть, но нет
@plhk говорят, но он у меня отказался емёржиться
@plhk одним _Thread_local сыт не будешь, как для _Thread_local повесить функцию, которая выполнится после смерти треда?
@hirthwork ресурсы освободить например
@l29ah asprintf аллоцирует память в куче
да, я знаю, что этот код уязвим к атакам на переполнение стека
@chewbacca да не предсказуемый, нет такого понятия как «обычный» в макросах общего назначения
@chewbacca вот только ни один цомпилятор ещё не предоставляет <threads.h> из C11, чтобы это всё мутить
@plhk должно быть, но нет
@plhk говорят, но он у меня отказался емёржиться
@plhk одним _Thread_local сыт не будешь, как для _Thread_local повесить функцию, которая выполнится после смерти треда?
@hirthwork ресурсы освободить например