すべてのコンパイラには独自のバージョンのスレッド ローカル ストレージがあるため、最終的にはそのためのマクロを作成しました。唯一の問題は、GCC (pthreads がオフになっている) であり、次のようになります。
「このターゲットではスレッドローカルストレージはサポートされていません」
この場合、pthreads が実際にオフになっていることを考えると、それで十分です。問題は、 #ifdef __GCC_XXX_NO_THREADS_XXX などのマクロを使用してこれを検出する一般的な方法があるかどうかです。
編集:以下の受け入れられた回答を参照してください。また、ここに私の怠惰な解決策があります:
$ touch test.c
$ gcc -E -dM test.c > out.1
$ gcc -pthread -E -dM test.c > out.2
$ diff out.*
28a29
> #define _REENTRANT 1
これはMac OS X上にあります。ポータブルかどうかはわかりません...