时间:2011-10-22 20:05:34

标签: linux macros queue linked-list

我使用包含

sys / queue.h 功能创建了一个LIST
struct stInside{
   int a;
   int b;
};

struct stOutside{
   struct stInside in;
   LIST_ENTRY(stOutside) outq;
};

LIST_HEAD(stOutsideHead, stOutside) head = LIST_HEAD_INITIALIZER(head);
struct stOutsideHead *headPtr;

struct stOutside *list;

for(int i=0; i < 4; i++){
   list = malloc(sizeof(struct stOutside));
   list->in.a = i;
   list->in.a = i;
   LIST_INSERT_HEAD(&head, list, outq);
}

我想知道如何&amp;要使用什么,才能根据struct stInside的 a 字段对此列表进行排序。是否有任何特定的MACROS可以完成这项工作?我看到了

#define LIST_SORT_PROTOTYPE(name, type, field, cmp)             \
QHELPER_SORT_PROTOTYPE(LIST, name, type, field, cmp)
sys / queue.h 中的

但我不明白它是如何工作的。

非常感谢分享和你的时间。

1 个答案:

答案 0 :(得分:1)

看看this example。它使用SLIST而不是LIST,但想法是一样的。

基本上,只要您使用排序函数原型,LIST_SORT_PROTOTYPE(...)就可以使用LIST_SORT_GENERATE(...),只要您使用排序函数定义,LIST_SORT(...)就可以使用{{1}},无论您在哪里使用该函数。