当我们编写一个实现线程的C程序时,会使用-D_REENTRANT参数。
我不明白为什么要在这里使用-D_REENTRANT。
例如:gcc t1.c -lpthread -D_REENTRANT
当我们编写一个实现线程的C程序时,会使用-D_REENTRANT参数。
我不明白为什么要在这里使用-D_REENTRANT。
例如:gcc t1.c -lpthread -D_REENTRANT
实际上,在GCC中使用线程的推荐方法是使用-pthread
选项。它等同于-lpthread -D_REENTRANT
,因此你实际上没有问题。
这些标志的作用如下:
-lpthread
指示链接器使用适当版本的库以实现线程兼容性。
-D_REENTRANT
告诉编译器使用与线程使用相关的声明(函数、类型等)。
#if defined _REENTRANT || defined _THREAD_SAFE
# define __USE_REENTRANT 1
#endif
不一定需要编写它,但建议这样做。
定义_REENTRANT
会导致编译器在C库中使用线程安全(即可重入)版本的多个函数。