可能重复:
关闭 Eclipse 错误(这不是真正的错误)
我正面临这个烦人的问题:Eclipse 拒绝识别该std::to_string
函数,但我的程序编译时没有错误。我错过了什么?
根据cppreference该std::to_string
函数是在 中定义的<string>
,因此我将其明确包含在犯罪.cpp
文件中。我也试过这个,这个和这个解决方案,但没有运气。
还有其他建议吗?
编辑:
我在 Linux 下使用 g++ 4.7.2。
可能重复:
关闭 Eclipse 错误(这不是真正的错误)
我正面临这个烦人的问题:Eclipse 拒绝识别该std::to_string
函数,但我的程序编译时没有错误。我错过了什么?
根据cppreference该std::to_string
函数是在 中定义的<string>
,因此我将其明确包含在犯罪.cpp
文件中。我也试过这个,这个和这个解决方案,但没有运气。
还有其他建议吗?
编辑:
我在 Linux 下使用 g++ 4.7.2。
更新: 自从我发布原始答案以来已经很长时间了,它已经过时了。我今天(2014 年 3 月 15 日)仔细检查了:在 Eclipse Kepler(内部版本号 20130614-0229)中,足以
在Project > Properties > C/C++ Build > Settings然后在Tool Settings选项卡 上添加GCC C++ Compiler > Miscellaneous-std=c++11
标志,
然后在Window > Preferences > C/C++ > Build > Settings在Discovery选项卡上选择CDT GCC Built-in Compiler Settings并将-std=c++11
标志添加到Command 以获取编译器规格。在我的机器上,更改后它看起来像这样:
${COMMAND} -E -P -v -dD -std=c++11 "${INPUTS}"
清理并重建您的项目和索引(Project > C/C++ Index > Rebuild),因为 Eclipse 倾向于缓存错误消息并显示它们,即使它们在更改设置后消失了。
这肯定适用于我的机器。如果它不在你的身上,那么你可能想试一试:C++11 full support on Eclipse虽然我不确定这种方法的正确性,也没有必要在我的机器上这样做。截至 2014 年 3 月 7 日,用户声称它对他们有帮助,而上述方法没有。
原来的帖子,现在已经过时了:
看来您遇到了 Codan 的常见问题,请在此处查看我的答案。
代码如何编译并不是 100% 清楚的。在 Eclipse 中?或者从命令行,正确设置标志?所以以防万一:
您正在使用 C++11 函数。您是否将-std=c++0x
或-std=c++11
标志传递给编译器(假设 gcc)?
您可能还必须添加__GXX_EXPERIMENTAL_CXX0X__
到您的定义(再次假设 gcc)并重新启动 Eclipse。
在我的情况下,eclipse 认为__cplusplus
被定义为,199711L
但我很确定这应该被定义为类似的东西,201103L
因为libstdc++ v3
使用
#if __cplusplus < 201103L
# include <bits/c++0x_warning.h>
#else
在大多数新的 C++11 头文件中<future>
,例如. 虽然在编译时我绝对没有错误。这种奇怪的行为显然使 Eclipse 感到困惑,并使其无法正确地对包含的文件进行措辞。basic_string.h
<string>
g++ (Built by MinGW-builds project) 4.8.0 20121225 (experimental)
在包含 C++11 文件之前定义__cplusplus
一些东西201103L
应该可以修复虚假的 Eclipse 语法错误,例如Symbol 'shared_ptr' could not be resolved
.
#undef __cplusplus
#define __cplusplus 201900L
重新定义后,您需要右键单击项目Index -> Rebuild & Freshen all files
,或者更好地重新启动 Eclipse。