-D_REENTRANT
调用gcc。
在使用pthreads
时,这仍然需要吗?
它与gcc -pthread
选项有什么关系?我知道在pthreads中应该使用-pthread
,但我还需要-D_REENTRANT
吗?
另外,您是否了解在使用gcc 3.3.3和gcc 4.x.x之间使用REENTRANT的任何区别?
当我使用-pthread
gcc选项时,我可以看到_REENTRANT
被定义了。从命令行中省略-D_REENTRANT
会有什么影响,例如某些对象可能会编译为不支持多线程的形式,然后链接到使用pthread的二进制文件中,从而导致问题?
我认为只需使用: g++ -pthread
> echo | g++ -E -dM -c - > singlethreaded
> echo | g++ -pthread -E -dM -c - > multithreaded
> diff singlethreaded multithreaded
39a40
> #define _REENTRANT 1
我们正在编译多个静态库和应用程序,这些库和应用程序都使用 pthread。
我相信在过去的某个阶段它是必需的,但想知道现在是否仍然需要。通过谷歌搜索没有找到任何最近的信息提及 -D_REENTRANT
与 pthreads
。您能指向一些链接或参考资料讨论最新版本的 kernel/gcc/pthread 的使用吗?
澄清一下:目前我们正在使用 -D_REENTRANT 和 -lpthread,我认为我可以用 g++ -pthread 替换它们,看一下 gcc 的手册它设置了预处理器和链接器的标志。有什么想法吗?
g++ -pthread
,它等同于g++ -pthread -D_REENTRANT
。使用g++ -D_REENTRANT
会有所不同,可能无法设置所有的链接器标志。 - ptsg++ -D_REENTRANT -lpthread
要么是g++ -pthread
,两种形式都有相同的效果? - stefanB