Cxxdroid 中文文档 下载 App

REPL 即时解释模式 —— 单行代码立即出结果

什么是 REPL

REPL 是 Read-Eval-Print Loop 的缩写——读入一段代码、立即解释执行、打印结果、循环等待下一段输入。

Python、Ruby、Node.js 都有 REPL 模式,但在 C/C++ 这种必须编译的语言上实现 REPL 是个比较难的技术挑战——需要先把代码编译成临时目标文件、链接、加载执行、收集输出。

Cxxdroid 用的是 CERN Cling——一个 2010 年左右由欧洲核子研究中心推出的 C++ 解释器,基于 Clang 编译器。Cling 的实现方式是「即时编译(JIT)」:把你输入的代码片段快速编译成机器码、加载到内存、执行。

进入 REPL 模式

在 Cxxdroid 里开启 REPL 通常有几种方式:

REPL 模式:输入 std::cout << 2+3 即时得到 5

用 REPL 能做什么

快速验证表达式

> 3 + 5
(int) 8
> sizeof(long)
(unsigned long) 8
> "hello"s + " world"
(std::string) "hello world"

探索标准库

不知道 std::sort 怎么用?直接试:

> #include <vector>
> #include <algorithm>
> std::vector<int> v = {3, 1, 4, 1, 5}
(std::vector<int, ...>) {3, 1, 4, 1, 5}
> std::sort(v.begin(), v.end())
> v
(std::vector<int, ...>) {1, 1, 3, 4, 5}

临时测试函数逻辑

写一个小函数,即时调用、看到结果、删掉重来。

学习 C++ 新特性

C++20 的 Concepts、Ranges、Coroutines 学起来枯燥?在 REPL 里试一个小例子比读十页文档印象还深。

REPL vs 常规编译

维度REPL常规编译
反馈速度毫秒级数百毫秒到几秒
适用场景验证、探索、学习完整项目构建
性能略慢(JIT 编译 + 动态链接)原生静态编译速度
调试支持有限完整 gdb

限制

REPL 模式不是万能的:

对初学者来说,这些限制几乎不会碰到——REPL 最核心的价值是在手机上提供即时反馈,让学习 C++ 的体验像写 Python 一样流畅。