2010-04-08 47 views
18

其編譯,我們用gcc象下面這樣一個多線程程序:_REENTRANT標誌是什麼?

gcc -lpthread -D_REENTRANT -o someprogram someprogram.c 

究竟是什麼標誌-D_REENTRANT做在這裏?

+0

Duplicate:http://stackoverflow.com/questions/875789/gcc-do-i-need-d-reentr螞蟻與pthreads – 2010-04-08 16:43:56

+5

這不是一個真正的重複。鏈接的問題是在傳遞-pthread時詢問-D_REENTRANT是否是多餘的;這個問題詢問了-D_REENTRANT有什麼影響(無論是明確傳遞還是由-pthread隱含)。 – 2010-12-19 23:52:59

回答

1

它只是爲預處理器定義_REENTRANT。在相關代碼中的某處,您可能會在至少幾個地方找到#ifdef _REENTRANT#if defined(_REENTRANT)

還要注意名稱「_REENTRANT:」在實現者的名稱空間中(任何名稱以下劃線開頭,後面跟着另一個下劃線或大寫字母),因此定義它意味着您已經超出了標準定義的範圍至少在C或C++標準)。

+0

你能否更具體一些。可以舉一個例子來幫助我更好地理解。 – Vijay 2010-04-09 07:13:09

19

定義_REENTRANT導致編譯器使用線程安全的(即折返)在C庫中的幾個功能的版本。

你可以搜索你的頭文件,看看有什麼當它被定義時發生。