Я смотрел на то, как я мог бы использовать одиночные связанные списки, используя макросы, определенные в sys / queue.h, и у меня есть несколько сомнений. В настоящее время я пытаюсь создать простой список, используя тот же. Обратите внимание, что приведенная ниже программа является неполной, я добавил только ту часть, которая, на мой взгляд, уместна.
int main() {
SLIST_HEAD(slisthead, entry) head = SLIST_HEAD_INITIALIZER(head);
struct slisthead *headp;
struct entry {
SLIST_ENTRY(entry) entries;
}*n1, *n2, *n3, *np;
/* Upon expanding the macro we would get,
* struct entry {
* struct {
* struct entry *sle_first;
* } entries;
* }*n1, *n2, *np;
*/
Я не понимаю, почему "sle_first" вообще хранится в другой структуре. Не может ли SLIST_ENTRY развернуться до чего-то вроде следующего?
#define SLIST_ENTRY(type) struct type* sle_first;