我正在写一个多线程应用程序,我想知道以下几点: 当使用宏-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 –