- 博客(13)
- 收藏
- 关注
原创 C 语言“炼狱级”宏调试:从“幽灵逗号”到预处理器展开顺序的终极陷阱
摘要 在实现C语言的Result<T,E>宏时,一个奇怪的Bug出现了:and_then宏在Clang中神秘失败,而相似逻辑的map宏却工作正常。通过clang -E发现预处理后出现了"幽灵逗号",导致语法错误。深入分析发现,问题根源在于预处理器的参数展开顺序与GNU C扩展(语句表达式)的双重陷阱。当types参数被展开为(int, CString)时,__VA_ARGS__意外为空,导致语句表达式语法错误。这揭示了C预处理器与GNU扩展交互时的微妙边界情况。
2025-11-06 15:58:16
578
原创 用C从零手搓一个LLVM-like的IR框架 (Calico-IR) —— 兼论一个“老Rustacean”的C语言回归之路
半年前,我曾雄心勃勃地开始了一个个人项目:自创一门编程语言nyanlang。和许多初学者一样,我很快就撞上了一堵高墙——编译器后端。在 LLVM 庞大而复杂的 C++ API 面前,我感到了深深的无力。nyanlang计划因此搁置。一年后的今天,作为国科大(UCAS)“编译原理”课程的一部分,我决定直面这个“心魔”。我启动了从零开始,用纯 C 语言,亲手实现一个 LLVM-inspired 的 IR 框架。calir不仅仅是我的课程作业。它是对我过去一年技术积累的检验,更是我重启nyanlang。
2025-11-02 16:45:19
908
原创 Rust 与 LLVM 的 Windows 填坑指南:为 Inkwell 打造精确的 LLVM 18 环境
在 Windows 上为特定的 Rust FFI 库配置一个版本精确的 C++ 依赖,确实是一件充满挑战但非常有价值的事情。放弃不包含完整工具链的官方安装包。拥抱功能完备的 MSYS2/MinGW 环境。利用包管理器的历史归档,来绕开“滚动更新”的限制。锁定包版本,确保开发环境的长期稳定。希望这篇详尽的“填坑”指南能为你扫清障碍,让你能更专注于编译器本身的逻辑实现。
2025-09-13 16:41:29
785
4
原创 从一次开源 Bug 修复,我学会了 Git `cherry-pick` 的正确用法
《Git cherry-pick:精准移植提交的实用技巧》文章摘要: 本文通过作者修复Zed编辑器Bug的真实案例,介绍了Git中强大的cherry-pick命令。与合并整个分支不同,cherry-pick允许精准选择特定提交应用到当前分支,就像摘取熟透的樱桃。文章详解了三大核心应用场景:紧急线上Bug修复、选择性合并功能以及整理错误提交的分支。通过维护者解决SHA-256校验问题的实例,展示了如何用cherry-pick移植3个关键提交到修复分支。最后提供了基本用法、区间提交和冲突处理的具体操作指南。这个
2025-08-18 12:04:24
1160
原创 Windows 用户请进!手把手教你搭建媲美原生 Linux 的 Rust/LLVM 开发环境
本文详细介绍了如何在Windows系统上通过WSL2搭建高效的Linux开发环境,特别针对Rust和LLVM等工具链的安装配置。主要内容包括:1) 安装纯净的WSL2 Ubuntu系统;2) 配置Rust工具链和LLVM 18开发库;3) 解决编译过程中常见的"cc linker"和"Polly"等错误;4) 与VS Code集成实现无缝开发体验。该方案既保留了Windows系统的便利性,又提供了原生Linux的开发环境,特别适合系统编程、编译器开发等场景。文章提供了
2025-07-05 12:09:40
673
原创 大二学生打造自己的编程语言 NyanLang:从冲动、挣扎到重生的全纪录
《NyanLang:一个开发者的编程语言创造之旅》介绍了作者Karesis开发的静态类型极简语言项目。文章回顾了从最初基于llvmlite的原型到推翻重来的转型过程,强调质量优先、测试驱动的新开发理念。目前v0.0.3版本已完成100%测试覆盖率的词法分析器,采用表达式驱动、流程控制等特色语法设计。项目制定了清晰的开发路线图,并号召开发者参与贡献。该文不仅展示了一个编程语言的技术细节,更传递了作者对开源创造的坚持与热情。
2025-07-01 11:42:16
745
原创 Python项目依赖安装最佳实践(Windows)
在Python项目开发中,正确配置依赖是关键一步。本文将介绍从虚拟环境创建到依赖安装的完整流程。
2025-03-27 11:41:20
559
原创 Ubuntu 24.04.2 LTS 无法下载Docker解决
关键是使用了Ubuntu 22.04的仓库,这是一个聪明的变通方法(或许,因为Docker官方可能还没有为Ubuntu 24.04(Noble)创建正式支持。我已经成功安装了Docker,但尝试运行hello-world时遇到了网络超时(官方给的验证教程)。
2025-03-16 08:13:02
1144
4
原创 VS Code + Git + GitHub 完全傻瓜式教程
你是否曾被版本控制的复杂概念困扰?本教程如同一位耐心导师,将带你轻松掌握开发者必备的三大神器。从零基础到熟练应用,我们拆解每个步骤,用通俗易懂的语言和直观图示,让你不再惧怕"commit"、"push"等专业术语。无论你是编程新手,还是寻求提升效率的开发者,都能构建一套无缝衔接的工作流。告别混乱的文件管理、繁琐的团队协作和代码丢失,拥抱井然有序的开发环境。掌握这三大工具的协同使用,让你的项目更专业,为职业发展开启新可能。准备好改变你的编程习惯了吗?
2025-03-12 10:50:57
6496
原创 一分钟解决特定环境挂载梯子pip失灵问题
PIP_CONFIG_FILE=~/temp-pip.conf pip install torch transformers datasets numpy scikit-learn tqdm PyQt5(你换成你想装的)(我已经预先激活了venv环境,没有激活虚拟环境的话请参阅其他博主文章)3.(我的情况)系统深层有问题,使用临时配置文件进行安装。今天使用阿里云,准备跑ai,出现pip无法安装的问题。1.选择文件夹:(环境:vscode+ssh)重新激活虚拟环境,尝试安装(正常使用pip)
2025-02-27 03:22:27
584
原创 一分钟解决matplotlib中的中文显示和负号显示问题
plt.rcParams['axes.unicode_minus']=False#接在上面那行代码后面。我电脑里支持的中文字体有AR PL UMing CN,AR PL UKai CN等。plt.rcParams['font.sans-serif']=['你的字体']一般Windows会有Microsoft YaHei。Linux会有WenQuanYi Micro Hei。使用matplotlib画图,中文字体无法显示。**从所列出字体中找寻支持中文的字体。还可以顺带把负号显示问题也解决了。
2025-02-26 00:07:21
769
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅