最新文章

NEW VS Code:常用配置项

VS Code:常用配置项

bingliaolong IDE 11小时前 3 0

CPP 概述 在 VS Code 里用 C++,主要涉及三个配置文件,都放在项目根目录的 .vscode/ 文件夹下 tasks.json 定义"任务"(怎么编译) 作用是告诉 VS Code 如何执行外部命令,最常见的用途是编译 label:任务名字,供其他...

NEW Crafting Interpreters:学习一

Crafting Interpreters:学习一

bingliaolong Compiler 17小时前 2 0

什么是解释器/编译器 解释器 vs 编译器:有什么区别 很多人以为"编译器把代码变成机器码,解释器直接执行代码",这个说法不算错,但不够准确 更准确的区分方式是看代码的"意义"(semantics)是何时、如何被实现的: 编译器(Compi...

C_学习三

C_学习三

bingliaolong C 3天前 5 0

所有权、错误处理与 goto cleanup 概述 C 没有析构函数和异常 资源管理依靠接口约定与控制流完成 四种所有权关系 拥有 owned 当前代码拥有这块内存,必须最终调用 free(),或者明确转交给其他对象 借用 borrowed process() 通常只在调用期间借...

C_学习二

C_学习二

bingliaolong C 3天前 4 0

结构体布局、对齐、填充与联合体 为什么结构体存在填充字节? 假设平台要求: char:1 字节对齐 uint16_t:2 字节对齐 uint32_t:4 字节对齐 典型布局为: 成员 偏移 大小 version 0 1 填充 1 3 length 4 4 command 8 2 ...

C_学习一

C_学习一

bingliaolong C 6天前 5 0

C的结构体与对象模型 概述 C 不是“去掉 class 的 C++” C 主要通过“数据结构 + 普通函数 + 明确约定”组织程序 C没有构造函数 下面这段 只是在栈上定义了对象,成员没有自动初始化 此时读取: 会读取不确定值,行为可能未定义 应该明确初始化 C23 新增了空初始...

C++_ 模板学习十一

C++_ 模板学习十一

bingliaolong C++ 1周前 4 0

大型模板源码阅读 概述 阅读大型模板项目时,最容易犯的错误是 从公共 API 跳进第一个模板定义,然后试图把所有分支、所有类型和所有平台代码全部看懂 正确方法是先固定一个具体调用,只追踪它实际经过的路径 我们只关心: 这个调用中每个模板参数是什么 最终选中了哪个重载 哪些对象被复...

C++_ 模板学习十

C++_ 模板学习十

bingliaolong C++ 1周前 4 0

模板定制体系 概述 大型模板库必须解决一个核心问题 库作者写好了通用算法,但怎样允许用户为自己的类型提供特殊行为 C++ 中没有唯一的定制机制,而是形成了一组工具 机制 最适合表达 traits 这个类型具有什么静态信息 policy 这个组件采用哪一种行为策略 tag disp...

C++_ 模板学习九

C++_ 模板学习九

bingliaolong C++ 1周前 6 0

模板错误与调试 概述 模板报错之所以经常出现几百行,不是因为真正存在几百个错误,而是因为编译器必须告诉你: 最外层调用了哪个模板 它实例化了哪个内部模板 内部模板又实例化了什么 最终哪个表达式不合法 最小示例 下面代码不能编译 模板代码什么时候被检查 模板通常经历以下阶段: 阶段...

C++_ 模板学习八

C++_ 模板学习八

bingliaolong C++ 1周前 6 0

std::variant 与 std::visit 概述 std::variant 是 C++17 标准库提供的类型安全联合体 variant 解决什么问题 假设服务器收到的消息可能是 任意时刻,一条消息只会是其中一种 传统做法是手工组合枚举和 union 问题在于: 必须手动记...

C++_ 模板学习七

C++_ 模板学习七

bingliaolong C++ 1周前 8 0

Typelist——编译期类型容器 概述 普通容器保存运行期对象 Typelist 保存的是一组类型 它没有运行期元素,也不负责构造对象 所有内容都编码在模板参数包中 C++ 标准库没有名为 std::typelist 的类型,但: std::tuple<Ts...>...

扫一扫二维码分享