Поскольку у каждого компилятора есть своя версия локального хранилища потоков, я создал для него макрос. Единственная проблема сейчас - это 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. Я не уверен, что это портативный или что-то еще ...