我正在尝试使用标准库qsort
对宽字符数组进行排序:
wchar_t a = L'a';
wchar_t a1 = L'ä';
wchar_t b = L'z';
wchar_t chararray[] = {b, a, a1};
length = wcslen(chararray);
qsort(chararray, length, sizeof(wchar_t), wcscoll);
现在我认为所涉及的函数有这些原型:
int wcscoll(const wchar_t *ws1, const wchar_t *ws2);
void qsort(void *base, size_t num, size_t size, int (*comp_func)(const void *, const void *))
结果完全符合预期,但为什么我会收到编译器警告“ passing argument 4 of ‘qsort’ from incompatible pointer type
”?我怎样才能铸造wcscoll
以适应原型?
如果我定义并传入一个单独的比较函数,警告就会消失:
int widecharcomp(const void *arg1, const void *arg2)
{
return wcscoll(arg1, arg2);
}
...但是当参数不是 type 时,这个看起来应该有错误处理wchar_t *
。