2010-04-08 14 views
18

che la compilazione di un programma multithreaded che usiamo gcc come di seguito:Che cos'è il flag _REENTRANT?

gcc -lpthread -D_REENTRANT -o someprogram someprogram.c 

che cosa è esattamente la bandiera -D_REENTRANT facendo qui?

+0

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

+5

Non è proprio un duplicato. La domanda collegata chiedeva se -D_REENTRANT è ridondante quando si passa -pthread; questa domanda chiede quale sia l'effetto -D_REENTRANT ha (se passato esplicitamente o implicito da -pthread). –

risposta

1

Semplicemente definito _REENTRANT per il preprocessore. Da qualche parte nel codice associato, probabilmente troverai #ifdef _REENTRANT o #if defined(_REENTRANT) in almeno alcuni posti.

Si noti inoltre che il nome "_REENTRANT: è nello spazio dei nomi dello strumento di implementazione (qualsiasi nome che inizia con un trattino basso seguito da un altro carattere di sottolineatura o una lettera maiuscola), quindi definirlo significa che si è spostato all'esterno di ciò che definisce lo standard (almeno gli standard ++). C o C

+0

Potresti essere più specifico. Un esempio mi aiuterà a capire meglio. – Vijay

19

Definizione _REENTRANT fa sì che il compilatore di utilizzare thread-safe (ovvero rientrante) versioni di diverse funzioni della libreria C.

È possibile cercare i file di intestazione per vedere che cosa succede quando è definito.