__POSIX_VISIBLE 正在破坏我在 cygwin 上的线程

tur*_*anc 5 c++ gcc cygwin pthreads

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

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

#if __POSIX_VISIBLE >= 200112
Run Code Online (Sandbox Code Playgroud)

这些阻止了功能在 cygwin/windows 上可用。

我尝试搜索“__POSIX_VISIBLE”,但没有找到任何真正有用的信息。这实际上有什么作用,为什么?我认为只是 pthread 的某些部分无法在 Windows 上或在 cygwin 或其他任何地方工作。但是为什么在这种情况下只会阻塞一些pthread 呢?它甚至不会抱怨-pthread被使用。

我计划最终将所有 pthread 内容更改为 c++ 线程,但现在我只想编译它,以便我可以处理更直接的问题。如果我在 cygwin/windows 上这样做,有什么办法可以解决这个问题吗?

mat*_*eri 5

敬请关注/usr/include/sys/features.h

默认为 _GNU_SOURCE,包含所有内容。-std检查您的项目是否使用或限制定义ansi

  • std=c++NN 仅启用 C 标准中存在的功能,其余所有功能均被禁用 (2认同)