当我们编译一个在其中实现了线程的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
将为false
or 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 次 |
最近记录: |