1 C++ 预处理阶段 #
mindmap
id1[C++ 预处理阶段]
id1-1[预处理器概述]
id1-2[预处理器的作用与工作流程]
id1-3[预处理指令的基本语法]
id1-4[预处理阶段与编译阶段的区别]
id1-5[宏定义与宏展开]
id1-6[#define 指令详解]
id1-7[带参数宏的定义与使用]
id1-8[宏与内联函数的比较]
id1-9[预定义宏 __FILE__, __LINE__, __DATE__等]
id1-10[文件包含]
id1-11[#include 指令的工作原理]
id1-12[系统头文件与用户头文件]
id1-13[头文件保护与#pragma once]
id1-14[头文件包含的最佳实践]
id1-15[条件编译]
id1-16[#if, #ifdef, #ifndef, #else, #elif, #endif]
id1-17[条件编译的应用场景]
id1-18[平台相关代码的条件编译]
id1-19[调试代码的条件编译]
id1-20[其他预处理指令]
id1-21[#error 与 #warning]
id1-22[#line 指令]
id1-23[#pragma 指令]
id1-24[预处理器操作符 #, ##]
预处理器概述
预处理器的作用与工作流程
预处理指令的基本语法
预处理阶段与编译阶段的区别
宏定义与宏展开
#define 指令详解
带参数宏的定义与使用
宏与内联函数的比较
预定义宏 __FILE__, __LINE__, __DATE__等
文件包含
#include 指令的工作原理
系统头文件与用户头文件
头文件保护与#pragma once
头文件包含的最佳实践
条件编译
#if, #ifdef, #ifndef, #else, #elif, #endif
条件编译的应用场景
平台相关代码的条件编译
调试代码的条件编译
其他预处理指令
#error 与 #warning
#line 指令
#pragma 指令
预处理器操作符 #, ##
2 C++ 编译阶段 #
编译器工作流程
词法分析
语法分析
语义分析
中间代码生成
词法分析
标识符与关键字
字面量处理
运算符与分隔符
注释处理
语法分析
抽象语法树 AST 构建
语法错误检测
表达式解析
语句解析
语义分析
类型检查
符号表管理
作用域解析
函数重载解析
中间代码生成
地址码
静态单赋值形式 SSA
控制流图构建
数据流分析
mindmap
id2[C++ 编译阶段]
id2-1[编译器工作流程]
id2-2[词法分析]
id2-3[语法分析]
id2-4[语义分析]
id2-5[中间代码生成]
id2-6[词法分析]
id2-7[标识符与关键字]
id2-8[字面量处理]
id2-9[运算符与分隔符]
id2-10[注释处理]
id2-11[语法分析]
id2-12[抽象语法树 AST 构建]
id2-13[语法错误检测]
id2-14[表达式解析]
id2-15[语句解析]
id2-16[语义分析]
id2-17[类型检查]
id2-18[符号表管理]
id2-19[作用域解析]
id2-20[函数重载解析]
id2-21[中间代码生成]
id2-22[地址码]
id2-23[静态单赋值形式 SSA]
id2-24[控制流图构建]
id2-25[数据流分析]
3 编译优化技术 #
mindmap
id3[编译优化技术]
id3-1[优化级别与策略]
id3-2[O0, O1, O2, O3 优化级别]
id3-3[调试版本与发布版本]
id3-4[编译器优化选项]
id3-5[局部优化]
id3-6[常量折叠与传播]
id3-7[公共子表达式消除]
id3-8[死代码消除]
id3-9[循环优化]
id3-10[全局优化]
id3-11[内联函数优化]
id3-12[尾调用优化]
id3-13[寄存器分配优化]
id3-14[指令调度]
id3-15[链接时优化 LTO]
id3-16[LTO 工作原理]
id3-17[跨模块优化]
id3-18[全程序优化]
id3-19[LTO 的优缺点]
优化级别与策略
O0, O1, O2, O3 优化级别
调试版本与发布版本
编译器优化选项
局部优化
常量折叠与传播
公共子表达式消除
死代码消除
循环优化
全局优化
内联函数优化
尾调用优化
寄存器分配优化
指令调度
链接时优化 LTO
LTO 工作原理
跨模块优化
全程序优化
LTO 的优缺点
4 模板与编译 #
模板实例化
函数模板实例化
类模板实例化
显式实例化与隐式实例化
模板特化与偏特化
模板元编程
编译时计算
类型特征 type traits
SFINAE 原则
可变参数模板
模板编译问题
模板定义位置问题
分离编译与模板
模板显式实例化声明
导出模板 已废弃
mindmap
id4[模板与编译]
id4-1[模板实例化]
id4-2[函数模板实例化]
id4-3[类模板实例化]
id4-4[显式实例化与隐式实例化]
id4-5[模板特化与偏特化]
id4-6[模板元编程]
id4-7[编译时计算]
id4-8[类型特征 type traits]
id4-9[SFINAE 原则]
id4-10[可变参数模板]
id4-11[模板编译问题]
id4-12[模板定义位置问题]
id4-13[分离编译与模板]
id4-14[模板显式实例化声明]
id4-15[导出模板 已废弃]
5 编译错误与调试 #
mindmap
id5[编译错误与调试]
id5-1[常见编译错误]
id5-2[语法错误]
id5-3[类型不匹配错误]
id5-4[链接错误]
id5-5[模板实例化错误]
id5-6[编译器诊断信息]
id5-7[错误信息解读]
id5-8[警告信息处理]
id5-9[静态分析工具]
id5-10[代码质量检查]
id5-11[调试信息生成]
id5-12[调试符号表]
id5-13[GDB/LLDB 调试支持]
id5-14[核心转储分析]
id5-15[性能分析工具]
常见编译错误
语法错误
类型不匹配错误
链接错误
模板实例化错误
编译器诊断信息
错误信息解读
警告信息处理
静态分析工具
代码质量检查
调试信息生成
调试符号表
GDB/LLDB 调试支持
核心转储分析
性能分析工具
6 现代编译技术 #
模块系统 C++20
模块的概念与优势
模块声明与定义
模块接口与实现
模块与传统头文件的对比
概念与约束 C++20
概念定义与使用
约束表达式
概念与模板的集成
概念的错误信息改进
编译时反射
静态反射提案
类型信息获取
编译时代码生成
元编程的未来发展
mindmap
id6[现代编译技术]
id6-1[模块系统 C++20]
id6-2[模块的概念与优势]
id6-3[模块声明与定义]
id6-4[模块接口与实现]
id6-5[模块与传统头文件的对比]
id6-6[概念与约束 C++20]
id6-7[概念定义与使用]
id6-8[约束表达式]
id6-9[概念与模板的集成]
id6-10[概念的错误信息改进]
id6-11[编译时反射]
id6-12[静态反射提案]
id6-13[类型信息获取]
id6-14[编译时代码生成]
id6-15[元编程的未来发展]
7 跨平台编译 #
mindmap
id7[跨平台编译]
id7-1[编译器差异]
id7-2[GCC 与 Clang 特性对比]
id7-3[MSVC 编译器特性]
id7-4[编译器扩展语法]
id7-5[标准符合性检查]
id7-6[构建系统]
id7-7[Makefile 编写]
id7-8[CMake 构建系统]
id7-9[自动化构建流程]
id7-10[依赖管理]
id7-11[交叉编译]
id7-12[交叉编译工具链]
id7-13[目标平台配置]
id7-14[库依赖处理]
id7-15[调试与测试]
编译器差异
GCC 与 Clang 特性对比
MSVC 编译器特性
编译器扩展语法
标准符合性检查
构建系统
Makefile 编写
CMake 构建系统
自动化构建流程
依赖管理
交叉编译
交叉编译工具链
目标平台配置
库依赖处理
调试与测试
8 编译原理实践 #
编译器前端实现
词法分析器实现
语法分析器实现
语义分析器实现
错误恢复机制
编译器后端实现
代码生成器设计
目标代码优化
寄存器分配算法
指令选择与调度
自定义语言编译
领域特定语言 DSL 设计
语言语法设计
编译器框架选择
运行时环境构建
mindmap
id8[编译原理实践]
id8-1[编译器前端实现]
id8-2[词法分析器实现]
id8-3[语法分析器实现]
id8-4[语义分析器实现]
id8-5[错误恢复机制]
id8-6[编译器后端实现]
id8-7[代码生成器设计]
id8-8[目标代码优化]
id8-9[寄存器分配算法]
id8-10[指令选择与调度]
id8-11[自定义语言编译]
id8-12[领域特定语言 DSL 设计]
id8-13[语言语法设计]
id8-14[编译器框架选择]
id8-15[运行时环境构建]