Skip to content

Chinese++ 0.2

Choose a tag to compare

@YoloLogic YoloLogic released this 06 Oct 01:43
· 7 commits to main since this release

Chinese++ 0.2

一句话:这一版把「汉语标准库」真正做进了包里,并把 GUI 那条轨道从"最小一块"推到
窗口 / 控件 / 菜单 / GDI(含位图与双缓冲)。

新增(相对 0.1)

  • 汉语标准库随包:zhstdlib\,119 个中文头 —— 标准库 48(向量 / 字符串 / 映射 / 算法 / 迭代器…)
    + 别名 43 + C 运行库 25(C标准输入输出 / C数学 / C字符串…)
    + windows系统 3(Windows系统 / 窗口 / 绘图)。
    解压装好后 #包含 <向量> 开箱可用;英文原名照旧(std::vector / .push_back() / printf)。
  • 安装时自动写搜索路径:bin\chinese++.cfg / clang++.cfg / clang.cfg
    ⇒ 命令行与编辑器(clangd)都不必再记那 5 条 -isystem;移动包之后重跑一次一键安装即可。
  • 窗口 GUI(新头 <窗口>):窗口类(WNDCLASSEXW 复制体,带布局断言表)、消息(MSG 复制体)、
    消息码、注册窗口类/创建消息窗口/取消息/翻译消息/派发消息、
    窗口函数(设置窗口标题/取窗口标题/取窗口矩形/取窗口位置/移动窗口/发送消息/投递消息/
    显示窗口/更新窗口/销毁窗口/启用窗口/是否启用/取控件标识)、
    控件(创建按钮/创建编辑框/创建静态文本/创建复选框/创建列表框/创建组合框/创建进度条)
    与它们的消息(设置勾选/取勾选/添加列表项/添加组合项/设进度范围/设进度值…)、
    菜单(创建菜单/创建弹出菜单/追加菜单项/取窗口菜单/设置窗口菜单/删除菜单/取菜单项数/
    取子菜单/绘制菜单栏)。
  • GDI(新头 <绘图>):设备上下文/画笔/画刷/字体/位图/绘图对象/颜色参考;
    取窗口设备上下文/开始绘制/结束绘制/填充矩形/画矩形/画椭圆/画线/输出文本/
    设文本颜色/设背景颜色/设背景模式/取设备能力/取系统度量;
    位图与双缓冲:创建兼容设备上下文/创建兼容位图/位块传送/取位图尺寸/装入位图/
    设像素/取像素/删除兼容设备上下文;创建画笔/创建字体/取文本范围。
  • compiler-rt 完整:12 个运行库(ASan / UBSan / 覆盖率)+ 4 个 ignorelist(share\)
    + 20 个接口头(sanitizer\ / profile\ / fuzzer\,于是 #include <sanitizer/asan_interface.h> 可用)。
    有意不含 orc_rt / xray / memprof(这三个运行时本次构建显式关闭)。
  • 自测 21 项(verify.ps1):中文关键字、中文诊断、#包含 <向量> 不带任何 -I 也能编、
    AddressSanitizer 真报一次 use-after-free、--coverage 真链上、资源目录/许可证/硬链接齐全……

怎么用(三步)

  1. 装 Visual Studio 的 C++ 组件(必须:MSVC STL 与 Windows SDK 不在包里);
  2. 解压后双击 一键安装.cmd;
  3. powershell -File verify.ps1 —— 21 项全过就是能用。
#包含 <向量>                  // 中文头名;<vector> 照旧
整数 主函数(){
    标准::向量<整数> 表;        // std::vector<int> 照旧
    表.尾插(1); 表.尾插(2);     // .push_back() 照旧
    返回 (整数)表.尺寸() == 2 ? 0 : 1;
}

已知边界(说清楚,不藏着)

  • UI 那部分要额外链库:窗口/控件要 user32.lib,进度条要 comctl32.lib,GDI 要 gdi32.lib
    (产品头不替用户自动链 —— 这是"不改动你工程"的代价)。
  • 消息框(模态)与 TrackPopupMenu 没有真跑用例:实测(四种关闭手段全失败)表明,
    给隐藏窗口当 owner 时消息框不显示但也关不掉,真调会挂死测试;让它显示又违背"用例不弹窗"。
    它们只做编译期类型检查。你写自己的程序当然可以用。
  • 需要 VS Build Tools;真正"干净机器"上的验证仍未做(本机始终有构建树)。