Blog

C 言語で qsort_r がポータブルじゃなくて困る時の対策

https://github.com/noporpoise/sort_r

qsort は、ソート対象の変数以外を渡すことができないため、マルチスレッドのプログラムでは取り扱いづらい。tls 使えばいいが、それもなあ、という感じな時は、qsort_r を使いたい。

しかし qsort_r は標準化されていないため、ポータビリティが必要なケースでは使いづらい。

そこで sort_r だ。sort_r は、glibc 2.8 or later または BSD 環境下では qsort_r を使い、linux 環境下では qsort_s を利用し、何もなければ自前のソートルーチンでソートしてくれるという便利な奴である。

License も public domain なので使いやすくて良い。