Étant donné que chaque compilateur a sa propre version de stockage local de thread, j'ai fini par créer une macro pour cela. Le seul problème est maintenant GCC (avec pthreads est désactivé), ce qui me donne:"stockage local-thread non pris en charge pour cette cible", #ifdef?
« le stockage local des threads non pris en charge pour cet objectif »
assez juste, étant donné que pthreads sont effectivement éteints dans ce cas. La question est, existe-t-il une façon générique de détecter cela en utilisant une macro par ex. #ifdef __GCC_XXX_NO_THREADS_XXX?
EDIT: Voir la réponse acceptée ci-dessous. En outre, voici ma solution paresseuse:
$ touch test.c
$ gcc -E -dM test.c > out.1
$ gcc -pthread -E -dM test.c > out.2
$ diff out.*
28a29
> #define _REENTRANT 1
Ceci est sous Mac OS X. Je ne suis pas sûr que ce soit portable ou quoi que ce soit ...
Merci de me rappeler de __attribute __ (faible). Et oui, évidemment vous avez raison d'utiliser une macro. Ma question est plus du type paresseux :), mais aussi parce que je suis curieux de la réponse. – Krumelur