我也遇到过这个问题。在 Windows 上使用 Eclipse + Mingw GCC 是一个令人难以置信的.... 由于像这样的随机问题,令人震惊的设置。例如,我的工作区中有一个 C++11 项目,除了 std=c++11 或 gnu 标志之外不需要任何变通办法,而其他人则完全死掉不管这一点。
不幸的是,唯一的答案是我认为是黑客。如果您查看 Tuple 标头,您会看到:
#if __cplusplus < 201103L
# include <bits/c++0x_warning.h>
#else
因此,这里的答案(解决方案)变得显而易见。在某个地方,无论是编译器标志还是.cpp
文件中的定义,您都希望将 __cplusplus 定义为大于201103L
. 我是怎么做到的
项目属性->C/C++ 常规->路径和符号
然后,在“符号”选项卡下,我添加了一个新符号。对于我使用的符号名称和我使用__cplusplus
的值201303L
。这将强制索引器重新运行,此时 Eclipse 将正确使用 C++11 包含。
在旁注中,我认为有人创建一个 Eclipse CDT + Mingw GCC 安装程序来正确设置所有内容已经过时了。这个问题只是您在使用此 IDE 和工具链时遇到的大量问题的皮毛,从错误的 Mingw 版本到 IDE 中糟糕的索引和解析。在那张纸条上,请始终确保您没有使用有缺陷的 Mingw 发行版。这也可能导致这些问题。
编辑#1
另请注意,即使使用此符号,您也应该在“杂项”下包含 --std=X 标志作为编译器标志。此符号仅用于 IDE 解析具有正确 C++11 支持的标头。