2014-04-25 27 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',它就会被暴露,这是在默认特性配置文件中定义的。 –

相关问题