Я нашел приведенный ниже код в очень старом вопросе о связанных списках ("https://stackoverfloquestions/522010/how-do-i-build-a-onetwothree-linked-list-with-a-minimum-number-of-assignment-opew.com/"), и что меня смутило, была не сама часть связанного списка, а способ определения этого макроса , Поскольку я не очень знаком с C, мне интересно, сможет ли кто-нибудь помочь мне разобрать это утверждение #deifine и, возможно, покажет мне альтернативные решения для аналогичного результата. Заранее спасибо за внимание!
#define build_list(...) \
_build_list((sizeof((int []){ __VA_ARGS__ }))/(sizeof(int)), \
(int []){ __VA_ARGS__ })
struct node * _build_list(size_t count, int values[count])
{
struct node * next = NULL;
for(size_t i = count; i--; )
{
struct node * current = malloc(sizeof *current);
*current = (struct node){ values[i], next };
next = current;
}
return next;
}