当我们编译一个在其中实现了线程的C程序时,我们编写这个语句.我不明白为什么我们在这里使用-D_REENTRANT.例如gcc t1.c -lpthread -D_REENTRANT
rod*_*igo 10
实际上,在GCC中使用线程编译的推荐方法是使用该-pthread选项.这相当于-lpthread -D_REENTRANT你实际上没有问题.
标志执行以下操作:
-lpthread 指示链接器使用适当的库版本来实现线程兼容性.
-D_REENTRANT 告诉编译器使用线程使用所必需的声明(函数,类型,...).
编译器喜欢gcc使用-D name定义来预定义name为宏1。
在程序源代码和头文件中,您将看到编译器指令,这些指令_REENTRANT在此宏为true或时检查并执行某些操作1。
如果此宏未传递给编译器,则编译器指令_REENTRANT将为falseor 0。
从 /usr/include/features.h 中获取此示例。
#if defined _REENTRANT || defined _THREAD_SAFE
# define __USE_REENTRANT 1
#endif
Run Code Online (Sandbox Code Playgroud)
您将看到它告诉编译器在定义了 _REENTRANT 时要做什么。
最后,你要链接代码againspthread库,以便您可以用pthread_*()家庭一样pthread_create(),pthread_join()。
当-lpthread传递给链接器时,代码与libpthread.so.
| 归档时间: |
|
| 查看次数: |
8784 次 |
| 最近记录: |