我正在学习 LCTHW 教程,我有一个任务要做。这是数据结构:
typedef struct DArray {
int end;
int max;
size_t element_size;
size_t expand_rate;
void **contents;
} DArray;
我已经声明了一个 typedef:
typedef int (*DArray_compare) (const void *a, const void *b);
当我创建一个排序函数时,我将一个 DArray_compare 传递给它,问题是我无法弄清楚如何做这个比较器的示例。
我试图做这样的事情:
int compare(const void *a, const void *b)
{
int i = (int)*a;
int k = (int)*b;
printf("%d %d\n", i, k);
return i - k;
}
但我收到一个错误:
error: operand of type 'void' where arithmetic or pointer type is required int i = (int)*a;
问题是:在不改变比较器的struct和typedef的情况下,我想创建一个比较int的比较器,我该怎么做呢?