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」或「Interactive Mode」
- 创建一个新的 REPL 会话文件
- 某些版本可能在主界面有专门的 REPL 入口

用 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 里无法直接加载
- 不支持内联汇编
对初学者来说,这些限制几乎不会碰到——REPL 最核心的价值是在手机上提供即时反馈,让学习 C++ 的体验像写 Python 一样流畅。