Avi*_*vio 13 c++ eclipse eclipse-cdt c++11
可能重复:
关闭eclipse错误(这不是真正的错误)
我正面临这个恼人的问题:Eclipse拒绝识别该std::to_string函数,但我的程序编译没有错误.我错过了什么?
根据cppreference,std::to_string函数被定义<string>,因此我将其明确地包含在被控制的.cpp文件中.我也试过这个,这个和这个解决方案,没有运气.
还有其他建议吗?
编辑:
我在Linux下使用g ++ 4.7.2.
Ali*_*Ali 30
UPDATE: 这是一个很长的时间,因为我张贴的原始答案,它已经过时.我今天(2014年3月15日)双重检查:在Eclipse开普勒(编译号20130614-0229)就足够了
下添加项目>属性> C/C++编译>设置然后上工具设置标签 GCC C++编译器>其它的-std=c++11标志,
然后在窗口>首选项> C/C++>构建>设置上发现选项卡选择CDT GCC内置的编译器设置和添加-std=c++11标志命令来获得编译器的规格.在我的机器上,它在更改后看起来像这样:
${COMMAND} -E -P -v -dD -std=c++11 "${INPUTS}"
清洁和重建两个项目和索引(项目> C/C++指数>重建)作为Eclipse的趋向缓存错误信息,并告诉他们,即使他们是在改变设置后消失.
这肯定适用于我的机器.如果它没有在你的上面,那么你可能想要对此有所了解:虽然我不确定这种方法的正确性,也不是必须在我的机器上进行,但是对Eclipse的C++ 11完全支持.截至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
Run Code Online (Sandbox Code Playgroud)
在大多数新的C++ 11头文件中,例如<future>和basic_string.h(包括std :: to_string的定义)包括在内<string>.虽然在编译时g++ (Built by MinGW-builds project) 4.8.0 20121225 (experimental)我绝对没有错误.这种奇怪的行为显然会使eclipse混淆并使其无法正确表达所包含的文件.
在包含C++ 11文件之前定义__cplusplus一些东西201103L应该修复伪造的eclipse语法错误,例如Symbol 'shared_ptr' could not be resolved.
#undef __cplusplus
#define __cplusplus 201900L
Run Code Online (Sandbox Code Playgroud)
在重新定义之后,您需要右键单击项目,Index -> Rebuild & Freshen all files或者甚至更好地重新启动eclipse.
| 归档时间: |
|
| 查看次数: |
21529 次 |
| 最近记录: |