GLib 库这样做是为了比较两个单链表节点:
 typedef struct _GSList {
  _GSList *link;
   void *data;
} GSList;
    int g_sListPosition(GSList *list, GSList *llink) {
        int cnt = 0;
        while(list) {
            if(list == llink)  // Note here
                return cnt;
            cnt++;
            list = list->link;
        }
        return -1;
    }
但是当我像这样比较节点时。它返回错误:
int main(void) {
    GSList *list = NULL, *list2 = NULL;
    list2 = g_sListAppend(list2, "def");
    list = g_sListAppend(list, "abc");
    list = g_sListAppend(list, "def");
    list = g_sListAppend(list, "ghi");
    printf("%d", g_sListPosition(list, list2));   // Return -1 ?
}
那么,这里比较的是什么(在文档中,它写的是获取给定元素在 GSList 中的位置)、节点或列表中包含的数据?
编辑:感谢所有给出的,我的错误我实际上是以错误的方式做的。我必须比较列表的相同实例。