Я разрабатываю приложение пользовательского пространства, которое использует linux / list.h в качестве одного из заголовков. Однако, я столкнулся с проблемой, когда я использую это определение макроса "list_for_each_entry" из list.h в моем собственном приложении:
#define list_for_each_entry(pos, head, member) \
for (pos = list_first_entry(head, typeof(*pos), member); \
&pos->member != (head); \
pos = list_next_entry(pos, member))
static void *slob_alloc(size_t size){
struct slob_page *sp;
struct list_head *slob_list;
list_for_each_entry(sp, slob_list, list) { //The location where error is reported.
//Something else ...
}
}
Определения slob_page приведены ниже:
struct slob_page {
union {
struct {
slob_t *free;
struct list_head list; /* the member accessed by that macro expansion */
};
struct page page;
};
};
Компилятор выдал ошибку «ошибка: использование необъявленного идентификатора« список »;». Похоже, он не смог распознать список как имя участника.
Как я могу решить эту проблему?