Приветствую.В include/linux/list.h сорцов ядра встретил такую конструкцию:
#define LIST_HEAD_INIT(name) { &(name), &(name) }
Полагаю, то что в { .. } это расширение gcc? По какому слову искать в info gcc?
Спасибо.
>В include/linux/list.h сорцов ядра встретил такую конструкцию:
>
>#define LIST_HEAD_INIT(name) { &(name), &(name) }
>
>Полагаю, то что в { .. } это расширение gcc? По какому
>слову искать в info gcc?Нормальная сишная конструкция. Никакое не расширение. На место макроса
будет подставлено дословно '{ &(аргумент), &(аргумент) }'.
>Нормальная сишная конструкция. Никакое не расширение. На место макроса
>будет подставлено дословно '{ &(аргумент), &(аргумент) }'.Хочу добавить порцию ворчания. Дети, изучение исходников ядра - далеко
не лучший способ изучения синтаксиса языка. Честное слово.
>Нормальная сишная конструкция. Никакое не расширение. На место макроса
>будет подставлено дословно '{ &(аргумент), &(аргумент) }'.
все верно :)
поторопился с вопросом
> Полагаю, то что в { .. } это расширение gcc?Макрос LIST_HEAD_INIT(name) используется для инициализации структуры list_head,
объявленной в linux/list.h:struct list_head {
struct list_head *next, *prev;
};Конструкция
struct list_head name = LIST_HEAD_INIT(name);
означает
struct list_head name = {&name, &name};
то есть
struct list_head name;
name.prev = &name;
name.next = &name;