2010-04-08 6 views
18

qui compilation d'un programme multithread nous utilisons gcc comme ci-dessous:Qu'est-ce que le drapeau _REENTRANT?

gcc -lpthread -D_REENTRANT -o someprogram someprogram.c 

ce qui est exactement le drapeau -D_REENTRANT faire ici?

+0

double:. http://stackoverflow.com/questions/875789/gcc-do-i-need-d-reentr ant-with-pthreads –

+5

Ce n'est pas vraiment un doublon. La question liée demandait si -D_REENTRANT est redondant lors du passage de -pthread; cette question demande quel effet a -D_REENTRANT (qu'il soit passé explicitement ou implicitement par -pthread). –

Répondre

1

Il _REENTRANT simplement défini pour le préprocesseur. Quelque part dans le code associé, vous trouverez probablement #ifdef _REENTRANT ou #if defined(_REENTRANT) dans au moins quelques endroits. Notez également que le nom "_REENTRANT: est dans l'espace de nom de l'implémenteur (tout nom commençant par un trait de soulignement suivi d'un autre souligné ou d'une majuscule), ce qui signifie que vous avez quitté ce que la norme définit (au moins C ou C++ normes).

+0

Pourriez-vous s'il vous plaît être plus précis. Un exemple m'aidera à mieux comprendre. – Vijay

19

Définition _REENTRANT provoque le compilateur à utiliser thread-safe (c.-à-rentrante) versions de plusieurs fonctions dans la bibliothèque C.

Vous pouvez rechercher vos fichiers d'en-tête pour voir ce que se produit quand il est défini