Skip to content

常见问题 ​


装之前 ​

要先装 Visual Studio Build Tools 吗? ​

不用了(2026-10 起)。发行包里双击 一键安装.cmd 就行, 它会自动建别名、检测 Build Tools、按需下载便携 VS Code、跑包内自测。

★ 包里已经带上了整套「地基」:开源 MSVC STL 头、2037 个 mingw-w64 头、 11 个手搓的编译器支撑头、10 个 VC++ 运行库 DLL —— 所以解压即用。

早期版本确实要先手动装(留档)

那时不装会报 找不到文件 'cstdio':

powershell
winget install --id Microsoft.VisualStudio.2022.BuildTools --override "--quiet --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"

为什么当时不自带:C++ 标准库、C 运行库、Windows SDK 都是微软的东西, 我们没有权利打包分发,所以包里只有编译器本体 + 汉化库 + compiler-rt。

支持哪些平台? ​

目前是 Windows x64。


用法 ​

中英能混着写吗? ​

能,而且这是设计的一部分。 同一个文件里既有 #包含 也有 #include 完全合法:

cpp
#包含 <cstdio>
#include <vector>

整数 主函数() {          // 整数 = int,主函数 = main
    std::vector<int> v;   // 库名照旧是英文
    返回 0;               // 返回 = return
}

一旦为了「纯」而删掉英文拼写,那不是更强的中文编程,而是更弱的 C++ —— 因为你切断了三十年生态里的一切:第三方库、调试器、现有代码。

所以判据是:能加就不要改。

报错怎么变回英文? ​

powershell
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 集成
  • 编译速度与产物体积的实际对比数据
  • 已知的限制和坑

以 MIT / Apache-2.0 等宽松许可发布 · 联系作者 QQ:1396257961