常见问题
装之前
要先装 Visual Studio Build Tools 吗?
不用了(2026-10 起)。发行包里双击 一键安装.cmd 就行, 它会自动建别名、检测 Build Tools、按需下载便携 VS Code、跑包内自测。
★ 包里已经带上了整套「地基」:开源 MSVC STL 头、2037 个 mingw-w64 头、 11 个手搓的编译器支撑头、10 个 VC++ 运行库 DLL —— 所以解压即用。
早期版本确实要先手动装(留档)
那时不装会报 找不到文件 'cstdio':
winget install --id Microsoft.VisualStudio.2022.BuildTools --override "--quiet --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"为什么当时不自带:C++ 标准库、C 运行库、Windows SDK 都是微软的东西, 我们没有权利打包分发,所以包里只有编译器本体 + 汉化库 + compiler-rt。
支持哪些平台?
目前是 Windows x64。
用法
中英能混着写吗?
能,而且这是设计的一部分。 同一个文件里既有 #包含 也有 #include 完全合法:
#包含 <cstdio>
#include <vector>
整数 主函数() { // 整数 = int,主函数 = main
std::vector<int> v; // 库名照旧是英文
返回 0; // 返回 = return
}一旦为了「纯」而删掉英文拼写,那不是更强的中文编程,而是更弱的 C++ —— 因为你切断了三十年生态里的一切:第三方库、调试器、现有代码。
所以判据是:能加就不要改。
报错怎么变回英文?
chinese++ 示例.cpp -o 示例.exe -fno-chinese-diagnostics为什么 error: / warning: 还是英文?
故意的。 编辑器的问题面板、CI 脚本、各种日志分析工具都靠这两个前缀抓级别 —— 把它们也译成中文,会把整条工具链打断。
中文的是正文:
示例.cpp:5:1: error: 未知类型名 '坐标点'; 你是想写 '坐标' 吗?兼容性
会不会把我的英文代码编坏?
不会,而且这件事有机器在守。
8 个真实开源项目与官方 clang 逐项对照:cases=8 fail=0
| 项目 |
|---|
| tinyxml2 / pugixml / fmt / googletest / cJSON / zlib / libuv / lz4 |
其中 4 项已经进了总判据,每次提交都跑。
不是「我们保证」,是「每次提交全量复跑」。
能和官方 clang / VS 混用吗?
能。 产物与官方 clang 二进制兼容,可互相链接。
原因见上:用的是微软原封不动的 MSVC STL,没有换掉任何东西。
中文标准库和英文的会冲突吗?
不会。中文头是别名,不是另一套实现 —— 产物 119 个头覆盖了标准头 103/103, 底层仍是同一个 STL。
覆盖范围
汉化到什么程度了?
| 层 | 现状 |
|---|---|
| 关键字 | ✅ 99 个拼写(86 普通 + 2 上下文 + 11 运算符替代) |
| 预处理指令 | ✅ 22 条,中英可随意混用 |
| 诊断正文 | ✅ 7344 / 7375(旧口径) = 99.6% |
| 标准库名字 | ✅ 标准头 103 / 103 全覆盖 |
| C 运行库 / 系统 API | 🟡 逐层加中文名(已起 362 个(类型 64 / 函数 292 / 值宏 6)—— 逻辑缺口只剩 14,且都是硬边界) |
「99.6%」剩下那 0.4% 是故意留英文的(比如上面说的级别前缀)。
⬜ 还没写的
下面这些还没整理,有需要可以直接来问(联系方式见 关于):
- 调试器 / 构建系统怎么配(CMake、Ninja)
- 和 Visual Studio 的 IDE 集成
- 编译速度与产物体积的实际对比数据
- 已知的限制和坑