【问题标题】:Is there a REPL for C programming? [closed]是否有用于 C 编程的 REPL? [关闭]
【发布时间】:2012-06-01 18:33:18
【问题描述】:

我在 osx 上。我找到了这个 http://neugierig.org/software/c-repl/ 但是该页面上的代码链接似乎已损坏。

【问题讨论】:

标签: c read-eval-print-loop


【解决方案1】:

似乎 c-repl 的代码现在可以在 Github repository 找到。不过,这似乎是一个死项目(最后一次提交是 3 年前),所以我建议也寻找替代方案:

【讨论】:

  • 你觉得哪一个适合用
【解决方案2】:

刚刚找到IGCC(交互式 GCC)REPL。我喜欢。

例子:

./igcc

g++> int a = 1, b = 2;
g++> printf("%d\n", a + b);
3
g++> 

它会给你这样的编译错误:

g++> c = 3;
[Compile error - type .e to see it.]
g++> .e
<stdin>:14:1: error: use of undeclared identifier 'c'
c = 3;
^

(顺丰下载:http://sourceforge.net/projects/igcc/files/

【讨论】:

【解决方案3】:

gdb 是一个非常好的 REPL。你不能在那里定义新的函数,但你可以计算表达式(包括那些有副作用的)。

【讨论】:

  • 一个如何使用 gdb 作为回复的例子会很好。
  • 一个如何使用 gdb 的例子: 1) gdb /bin/ls 2) print "Hello world"[0] 当然它比这更复杂......但即使是这个简单的例子也说明了一个常见的 C 习惯用法在 repl
  • 在带有 gdb 6.3.50 的 Mac OS 上,上面的示例给出:“评估此表达式需要目标程序处于活动状态”
  • @snow aha - 没错,gdb 实际上不会作为 repl 工作,除非它附加到某个实际运行的进程。实现这一目标的方法不止一种。通常在 Linux 上打破“main”可以工作,但像“ls”这样的系统程序通常没有这个。以下在 Centos5 上工作:1)gdb /bin/ls 2)break readdir 3)运行 4)打印“hello world”
  • gdb 有时似乎有点挑剔...例如:(gdb) print printf("test\n"); No symbol "printf" in current context. 这很有趣,因为我刚刚跳过了对 printf 的调用!
猜你喜欢
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 2010-11-06
  • 2010-09-09
相关资源
最近更新 更多