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 *
です。