我正在编译一个在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上这样做,有没有办法解决这个问题?
答案 0 :(得分:3)
查看/usr/include/sys/features.h
详情。
默认为_GNU_SOURCE,包括everthing。
使用-std
或ansi