【问题标题】:Is there such a thing as a C++ interpreter? [duplicate]有没有像 C++ 解释器这样的东西? [复制]
【发布时间】:2011-01-09 20:57:19
【问题描述】:

可能重复:
Have you used any of the C++ interpreters (not compilers)?

嗨,

我目前正在学习 C++,并且是一般编程的初学者。我一直在尝试为我正在使用的书中的一些编程问题编写一些代码。我发现我写的东西经常出错,而这些错误在程序运行时会出现。当有常规输出时,通常很明显我在程序中哪里出错了。但是在长时间的计算中,我经常不确定为什么特定代码会以某种方式运行。我最近也看过 Python。 Python 与解释器一起工作,解释器可以获取任何 Python 代码并计算其输出。

我想知道 C++ 是否有类似的东西。现在,当我想检查一行或一段代码时,我必须注释掉很多,保存它,编译它,然后从命令行运行它。而且我必须为一个错误多次这样做,直到我解决它。有没有办法将代码输入到活动终端中,该终端将运行代码并显示输出?更好的方法是在 IDE 中选择一个代码块(如选择文本)或多个块(查看如何处理函数),然后单击运行以仅运行该代码块并查看其输出而不注释掉不相关的行或保存文件。编译后的代码可以只驻留在内存中。

【问题讨论】:

  • 仅仅使用调试器、设置断点、检查变量等就足够了吗?
  • 我建议花一些时间学习像 Emacs 这样的 IDE 来自动化构建/调试/运行周期
  • 虽然我使用并喜欢 cint,但我建议使用 Uwe 和 aaa 的方法来改善您的开发周期,而不是试图强制 c++ 进入 RAD 模式。
  • 当你已经知道一种语言(Python)可以做你想做的事情(提供解释器)作为内置功能时,你希望通过专门学习 C++ 获得什么,这是一个地狱更容易使用?
  • 从经历过这一切的人那里得到它:您不会仅仅因为您“使用硬语言”而“更好地理解幕后发生的事情”。获得正确心智模型的唯一方法是在理论(计算机科学)水平或直接与金属(汇编语言)水平上学习(而不是工作)。

标签: c++ interpreter


【解决方案1】:

CINT 是一个 c & C++ 解释器,它接受几乎所有有效的 C++。不幸的是,许多 Linux 发行版不提供它,您可能必须从源代码构建它......这是一项不平凡的任务。

【讨论】:

  • 这看起来很有希望,我会试试看,谢谢你的信息。
【解决方案2】:

通常,调试器用于逐行执行代码,从选定的断点开始,并监视所有变量/值。

单元测试是一种测试小段代码的技术。

【讨论】:

  • 编译成功后才能调试c++程序。但是 OP 的问题是编译成功。他想要一种方法来测试程序的每一行,就像你在 matlab 或 python 中所做的那样。
【解决方案3】:

大多数 IDE 中的单步调试器可以帮助您解决此问题。

Here(例如)是如何在 Visual Studio 中设置执行点的描述,听起来像你想要的。

在某些情况下,"Immediate Window" 可能对您有用。它允许您输入表达式以立即进行评估。

您可以使用调试器运行到感兴趣的点(您将在此处设置断点),而不仅仅是独立运行单独的行,或者依靠打印语句来告诉您决定打印的任何变量的状态),然后您可以检查任何范围内变量的状态,甚至可以更改程序的正常流程。

【讨论】:

  • 假设我有一个很大的源文件,我可以选择多行/块,假设我只想看到 main() 中的几个函数、一个类和一些代码,所以我选择那些行和那么我可以只运行这些行而不必注释掉其余的行吗?
  • 您可以在您不想运行的任何内容之前放置一个断点,然后(在 Visual Studio 术语中)使用“设置下一个语句”,将执行点移动到您想要的代码的开头跑步。但是,我不太明白为什么您要完全独立于程序的其余部分运行某些行,而不是正常运行程序,直到达到要检查的点为止。
【解决方案4】:

有一些解决方案试图做到这一点 - 我知道的是 ChTextTransformer

但是,我怀疑这是否能很好地工作。 C++ 根本不是为了作为解释语言运行而设计的。

其中一个问题是 C++ 是very, very hard to parse。这使得提供其他语言常用的某些类型的工具变得非常困难。例如,我认为没有任何 C++ 重构工具真的很好用。

【讨论】:

  • 它们很少见,但它们确实存在。查看重复的候选人和链接到/来自它的其他几个问题(即链接侧边栏)。
【解决方案5】:

C++ 是一种不像 python 的编译语言。但是那里很少有 c/c++ 解释器,但不确定它们的功能。看看这些:Ch interpreterCINT

如果你真的想学习 c++,请不要使用 c/c++ 解释器。

【讨论】:

    【解决方案6】:

    如果您坚持使用交互式解释器,那么很长时间以来CINTROOT project 中使用的默认解释器。多年来它变得更好,但在处理模板时仍然只有有限的能力。此外,在 ROOT 项目中还有一个将其替换为 JIT compiling interpreter based on clang 的举措。

    如果我是你,我会学习如何运行编译器和交互式调试器,就像一些 cmets 中已经建议的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多