我正在寫一個多線程應用程序,我想知道以下幾點: 當使用宏-D_REENTRANT
時,我是否需要明確地使用_r
後綴函數?使用`-D_REENTRANT`時是否需要顯式使用`_r`後綴?
例如我是否可以在代碼中隨處使用strtok_r
,或者我可以使用strtok
並確保將-D_REENTRANT
宏傳遞給編譯器?
非常感謝
我正在寫一個多線程應用程序,我想知道以下幾點: 當使用宏-D_REENTRANT
時,我是否需要明確地使用_r
後綴函數?使用`-D_REENTRANT`時是否需要顯式使用`_r`後綴?
例如我是否可以在代碼中隨處使用strtok_r
,或者我可以使用strtok
並確保將-D_REENTRANT
宏傳遞給編譯器?
非常感謝
定義_REENTRANT
不會改變strtok()
語義。您需要使用strtok_r()
。
此外'-D_REENTRANT'是任何現代系統上的禁用操作。 –
感謝您的回答,@R ..請問您能解釋一下您的評論嗎? –
在基於glibc的系統上檢查'features.h','_REENTRANT'會導致'__USE_REENTRANT'被定義。然而,唯一檢查'__USE_REENTRANT'的地方是'unistd.h'中的'getlogin_r',如果定義了'__USE_POSIX199506',它就會被暴露,這是在默認特性配置文件中定義的。 –
相關:http://stackoverflow.com/questions/875789/gcc-do-i-need-d-reentrant-with-pthreads –