我试图找到一种方法来获得Eclipse上的完整C++ 11支持.
在Eclipse朱诺我有很多的新功能__GXX_EXPERIMENTAL_CXX0X__,但我没有找到支持std::threads,std::mutex等等.
如何完成所有C++ 11功能?
编辑:解决方案
去吧Project -> Properties -> C/C++ General -> Path and Symbols -> Tab [Symbols].添加符号:__ cplusplus,其值为201103L
我在Ubuntu 10.04 x86上为C/C++ Linux开发人员安装了Eclipse Indigo.
当我使用常见的预定义宏__BASE_FILE__Eclipse说Symbol '__BASE_FILE__' could not be resolved,但编译是可以的.我必须经常在我的代码中使用它,Eclipse用红线和bug图标填充我的屏幕:)
我怎样才能解决这个问题?
这感觉很傻,但是从Ubuntu 10.04升级到10.11并从Eclipse Helios升级到Eclipse Indigo之后的某个时间......我遇到了以下问题:
我正在尝试在math.h中使用一个名为isinf()的函数,但问题也出现在像isnan()这样的问题上.
该程序使用make在eclipse中使用make和fine进行编译.
但是如果我在eclipse中打开程序文件,它会报告它无法解析isinf()函数调用.
如果我只是将程序内容插入到新项目和新源文件中,则会立即显示错误.
使用Eclipse Helios CDT在11.04下没有发生此问题
为什么这些错误仅在程序文件打开时报告,而在编译程序时不报告; 为什么未检测到的错误是从命令行运行的?
有解决方案/解决方法吗?
Linux Ubuntu 10.11 64位
Eclipse CDT Indigo,Service Release 1,构建ID:20110916-0149
(也使用Eclipse EE Indigo - 如果有所不同)
GNU Make 3.81
gcc 4.6.1-9Ubuntu3
请在下面找到您需要复制的两个文件:
步骤0.验证Eclipse之外的一切正常
复制附加的源文件并使文件
创建目录,例如Mkdir FunTest
将源文件保存为'Test.cpp',将makefile保存为'makefile'
打开命令提示符并导航到目录例如FunTest
输入'
make'Enter./TestOut
程序响应"不是无限的"
步骤1.在Eclipse中创建项目
打开Eclipse
选择File | New | MakeFile Project with Existing Code
单击Browse - 导航到目录(FunTest)并单击ok
从Toolchain选择器中选择'Linux GCC'
单击Finish
步骤2.找到错误
单击Build All(Ctrl-B) - 项目构建没有错误
在项目资源管理器中打开项目以在目录中显示文件
双击文件"Test.cpp"
注意行旁边的错误图标测试无穷大
注意2错误消息:
Semantic error: Function _isinff …Run Code Online (Sandbox Code Playgroud) 我的经验到现在为止是,Eclipse中的错误发现是没有任何解决方案(试过可怕buggish __GXX_EXPERIMENTAL_CXX0X__,-std=c++0x,-std=c++11在设置每附近点).我不想再寻找解决方案了.现在我只想看到真正的编译器错误.但是如何实现这一目标呢?
可能重复:
禁用Eclipse的错误发现.(Codan误报)
到目前为止,使用GCC 4.8/Clang 3.3 C++支持Eclipse正在进行语法检查(在功能支持方面),Eclipse将许多事情标记为实际上有效代码的错误(模板别名恰好是我的主要问题,但是还有其他问题).
当我编译(或尝试无论如何,遇到一些问题,请参阅此处了解更多)无论编译器正在做什么工作都能完成它的工作,并且它的错误会被传播,但是它所说的代码仍然可以强调(红色分别是错误和警告的金蜘蛛,这使得查看正在发生的事情变得更加困难.
有没有办法摆脱这些错误/警告?
更好的方法是只有在编译尝试之后才能摆脱警告,并且只要代码的相关部分没有改变,但仍然保持它们一般启用.
(实际上最好的是Eclipse的插件,它支持所有,或至少比Juno本身更多的C++ 11,但我似乎无法找到它)
我知道您可以使用此处描述的GXX_EXPERIMENTAL hack启用正确的语法突出显示: Eclipse CDT索引器不知道C++ 11容器
但我认为,在使用cmake生成项目时,根本不需要触摸项目设置.
所以.有更简单的解决方案吗?