我正在寻找一个带有REPL的优秀C ++ IDE。视觉工作室中的那个不是......好吧,大多数情况下,如果我在源代码中复制/粘贴一行,REPL拒绝它,即使它是我放置断点或跳过的行。
C ++有没有好的IDE或REPL?
答案 0 :(得分:14)
Cling是一个交互式C ++解释器,构建在LLVM和Clang库之上。它比标准解释器的优点是它具有命令行提示符并使用实时(JIT)编译器进行编译。这类软件应用程序的许多开发人员(例如他们的项目中名为CSharpRepl的Mono)都将其命名为交互式编译器。
Cling的主要目标之一是在ROOT项目CINT中提供当前C ++解释器的现代高性能替代方案。与CINT的向后兼容性是开发过程中的主要优先事项。
答案 1 :(得分:7)
CINT是C和C ++代码的解释器。它是有用的,例如对于快速发展比执行时间更重要的情况。使用解释器可以大大减少编译和链接周期,从而促进快速开发。 CINT使C / C ++编程即使对于兼职程序员也很有趣。
CINT是用C ++编写的,只有不到400,000行代码。它被银行,集成设备甚至游戏环境中的几家公司用于生产,当然还有ROOT,使其成为全世界大量高能物理学家的默认解释器。
答案 2 :(得分:2)
我所不知道的主要是C ++中存在Clipp,允许解析嵌入在我的C ++代码中的javascript,并且找不到Cipp / Boost / Eigen / Quantlib的Clipp版本。
另一件我不明白的事情是为什么具有200ko大小的TinyCC无法解决windows.h而没有问题,LLVM团队抱怨Windows上的Clang.H在停机坪上引爆。
总而言之,融合,精神,浪潮以及许多希望使用C ++ REPL的人,为什么在二十年后甚至没有它的小版本。
这是我的解决方案
忘记REPL C ++并坚持REPL C,使用tinyCC并通过使用指针函数A来暴露方法的函数动作.function(toto t) - >功能(A *,toto t)。为了使它与object方法一起使用,你也可以使用声明作为struct __declspec(novtable)A {};
这将允许tinyCC结构理解与您的真实对象之间的二进制对齐兼容性。确实,你将不得不拆分数据元组和方法元组,但毕竟,这应该始终是第一位的。对象设计应该将拆分数据和方法分解为双模型,而不是混合模型,以防漏撞。在许多情况下,编译器无论如何都会将对象拆分为双模型。这将为Cling / Cint的科学家和用户提供极端的快速原型设计。
第二个解决方案,而不是REPL语句,使用动态加载/卸载对,在源更改时设置编译链(增量构建与否)和自动重新链接编译库。它根本不慢。这样可以在任何受支持的动态库操作系统上执行此操作,并且非常容易。
第三种解决方案,最简单的方法,启动基于Linux的vm(安装llvm工具链),并在vm上使用Cling。这不会在一个完整的窗口中运行,但似乎LLVM是Windows操作系统的仇恨者。