在 typdef 函数上转换为 const void* 参数以在 C 中使用 qsort

casting to const void* arguments on typdef function to use qsort in C

我在我的程序 (C) 中做了以下类型定义:

typedef void* ListElement;

typedef int(*CompareListElements)(ListElement, ListElement);

我在我的代码中创建了一个函数指针: CompareListElements compareElement

稍后在代码中我希望对 ListElements 数组使用 qsort:

qsort(elementsArray,listGetSize(list),sizeof(list->dummyHead->next->element, compareElement);

但是编译器指出:"passing argument 4 of 'qsort' from incompatible pointer type"。

恐怕是因为qsort需要一个int格式的函数(const void*, const void*)。当我提供 int (void*, void*).

有没有办法在不更改 typedef 的情况下,在调用 qsort 或之前将 compareElement 的参数转换为 (const void*, const void*)?

谢谢

只需将指针转换为适当的类型即可。

typedef int(*ConstCompareListElements)(const void *, const void *);

qsort(elementsArray,listGetSize(list),sizeof(list->dummyHead->next->element, 
         (ConstCompareListElements)compareElement);