__POSIX_VISIBLE破坏了我对cygwin的pthreading

时间:2016-07-01 07:35:09

标签: c++ gcc cygwin pthreads

我正在编译一个在cygwin上使用带有gcc(g ++)的pthreads的项目。看到我一直在linux上开发这个,我从来没有遇到任何问题。

但是现在,我无法编译使用某些pthread函数的代码,编译器抱怨这些函数没有声明。我意识到我的工具链g ++(GCC)5.4.0附带的pthread.h已经保护了

部分
#if __POSIX_VISIBLE >= 200112

这些都阻止了cygwin / windows上的功能。

我试图搜索“__POSIX_VISIBLE”,但没有发现任何真正有用的内容。这实际上做了什么以及为什么?我假设只是pthread的某些部分无法在windows上运行,或者在cygwin或其他任何内容中运行。但是为什么只有某些的pthread被阻止呢?它甚至没有抱怨使用-pthread

我计划最终将所有pthread的东西更改为c ++线程,但是现在我只是喜欢这样编译,所以我可以处理更直接的问题。如果我在cygwin / windows上这样做,有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:3)

查看/usr/include/sys/features.h 详情。

默认为_GNU_SOURCE,包括everthing。 使用-stdansi

检查您的项目是否限制了定义