【问题标题】:casting to const void* arguments on typdef function to use qsort in C在 typdef 函数上强制转换为 const void* 参数以在 C 中使用 qsort
【发布时间】:2015-07-19 14:23:36
【问题描述】:

我在我的程序 (C) 中做了以下 typedef:

typedef void* ListElement;

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

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

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

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

但是编译器声明:“从不兼容的指针类型传递 'qsort' 的参数 4”。

我担心这是因为 qsort 需要 int (const void*, const void*) 格式的函数。当我提供 int (void*, void*).

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

谢谢

【问题讨论】:

    标签: function casting constants void qsort


    【解决方案1】:

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

    typedef int(*ConstCompareListElements)(const void *, const void *);
    
    qsort(elementsArray,listGetSize(list),sizeof(list->dummyHead->next->element, 
             (ConstCompareListElements)compareElement);
    

    【讨论】:

    • @AtsrA 如果对您有帮助,请接受(和/或投票...)我的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多