【发布时间】:2011-03-30 13:29:44
【问题描述】:
我正在尝试使用标准库的 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);
}
...但是当参数不是wchar_t * 类型时,它看起来应该有错误处理。
【问题讨论】:
标签: c sorting pointers casting widechar