2014-04-25 49 views
2

我正在寫一個多線程應用程序,我想知道以下幾點: 當使用宏-D_REENTRANT時,我是否需要明確地使用_r後綴函數?使用`-D_REENTRANT`時是否需要顯式使用`_r`後綴?

例如我是否可以在代碼中隨處使用strtok_r,或者我可以使用strtok並確保將-D_REENTRANT宏傳遞給編譯器?

非常感謝

+0

相關:http://stackoverflow.com/questions/875789/gcc-do-i-need-d-reentrant-with-pthreads –

回答

5

定義_REENTRANT不會改變strtok()語義。您需要使用strtok_r()

+0

此外'-D_REENTRANT'是任何現代系統上的禁用操作。 –

+0

感謝您的回答,@R ..請問您能解釋一下您的評論嗎? –

+1

在基於glibc的系統上檢查'features.h','_REENTRANT'會導致'__USE_REENTRANT'被定義。然而,唯一檢查'__USE_REENTRANT'的地方是'unistd.h'中的'getlogin_r',如果定義了'__USE_POSIX199506',它就會被暴露,這是在默認特性配置文件中定義的。 –

相關問題