带有REPL的C++ IDE?

20

我正在寻找一个带有REPL的好的C++集成开发环境。Visual Studio中的那个......嗯,让我们说大多数情况下,如果我复制/粘贴源代码中的一行,REPL会拒绝它,即使它是我设置断点或步过的那一行。

有没有适用于C++的好的IDE或REPL?


2
http://root.cern.ch/drupal/content/cint - Robert Harvey
2
http://root.cern.ch/drupal/content/cling - Robert Harvey
2
http://www.artificialworlds.net/wiki/IGCC/IGCC - Robert Harvey
3个回答

20

Cling

Cling是什么?

Cling是一个基于LLVM和Clang库构建的交互式C++解释器。相较于标准解释器,它具有命令行提示和使用即时编译器(JIT)进行编译的优势。许多开发人员(例如Mono在他们的CSharpRepl项目中)将这类软件应用程序称为交互式编译器。

Cling的主要目标之一是提供当代高性能的C++解释器ROOT项目-CINT的替代方案。 在开发过程中,向后兼容CINT是首要任务。

http://root.cern.ch/drupal/content/cling


1
这看起来不错。它似乎仅适用于Linux操作系统。我不确定该有什么期望。我需要使用GDB兼容的IDE(我不知道任何)并在指向cling编译器(而不是g++)时像预期一样使用断点/REPL吗? - user34537

10

CINT

CINT是什么?

CINT是C和C++代码的解释器。它对于快速开发比执行时间更重要的情况非常有用。使用解释器可以大幅缩短编译和链接周期,从而促进快速开发。CINT使得即使对于兼职程序员,C/C++编程也变得愉悦。

CINT本身是用C++编写的,代码略少于400,000行。它被多家银行、综合设备厂商以及游戏环境中的几家公司广泛使用,当然还有ROOT,这使得它成为全世界许多高能物理学家的默认解释器。

http://www.hanno.jp/gotom/Cint.html


3
CLing应该独立于Clang,并能够在任何平台上进行编译,CERN的最新工作倾向于将CLing与Clang分离,这是一个好趋势。
我不理解的是Clipp在C++中的存在,它允许解析嵌入在我的C ++代码中的JavaScript,但找不到适用于仅C ++ / Boost / Eigen / Quantlib的Clipp版本。
另一件我不理解的事情是,为什么200ko大小的TinyCC可以轻松解析windows.h,而LLVM团队抱怨Clang在windows.H上爆炸。
总而言之,在融合、spirit、wave和如此多希望有一个C++ REPL的人们的帮助下,为什么经过20年还没有一个小版本呢?
以下是我的解决方案:
忘记REPL C ++,坚持REPL C,使用tinyCC并仅暴露方法的功能操作,使用指针函数A.function(toto t) -> function(A*,toto t)。要使其与对象方法一起工作,您还可以将声明用作struct __declspec(novtable)A {};
这将允许tinyCC结构理解和您真正的对象之间的二进制对齐兼容性。确实,您将不得不拆分数据元组和方法元组,但毕竟,在第一次拆分数据和方法时,应该始终如此。对象设计应将数据和方法拆分为双模型,而不是混合模型,这对于错误很有好处。在许多情况下,编译器将对象拆分为双模型。这将为科学家和Cling / Cint用户提供极快的原型制作。
第二种解决方案,而不是REPL语句,使用动态加载/卸载对,您设置编译链(增量构建或否)并在源更改时自动重新链接已编译的库。它根本不慢。这具有在任何支持动态库操作系统上进行操作的优点,而且非常容易实现。
第三种解决方案,最简单的方法,启动基于Linux的虚拟机(安装LLVM工具链),并在虚拟机上使用Cling。这在完全基于windowOS的公司中无法工作,但似乎LLVM是Windows OS的仇恨者。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接