我需要在项目中使用 popen
,但我得到:
error: 'popen' was not declared in this scope
看起来 GCC 在 -std=c++0x
和(与我能找到的少量信息相反)-std 下定义了
,这会导致 __STRICT_ANSI__
=gnu++0xpopen
(和 _popen
)从 stdio
中删除。奇怪的是,取消定义 __STRICT_ANSI__
并不能解决问题,也不能前向声明函数。我显然错过了一些东西。是否有合理的解决方法?
我使用 4.5.0 的 MinGW,并升级到 4.5.2,但仍然遇到同样的问题。我宁愿不用 msys 来编译 4.6.0,但如果必须的话,我会这样做。
最佳答案
我只是立即在命令行上取消定义它,这不是非常“干净”,但据我所知它工作正常。
-std=gnu++0x -U__STRICT_ANSI__
不应该这样做可能是有充分理由的,但它给了我想要的东西(C++0x 加上 GNU 扩展,加上遗留的东西仍然有效)。我已经这样做了很长时间,从来没有遇到过麻烦。但是如果它吃了你的猫,别怪我。
关于c++ - 我怎样才能让 C++0x 和 __STRICT_ANSI__ 相处融洽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5580921/