C语言预处理与宏定义完全指南
📚 共计 30 章节
01
预处理基础:C语言编译流程
预处理、编译、汇编、链接 · 预处理器角色 · #include详解(<>与""区别)
编译流程
#include
02
#define宏定义基础
无参宏(对象式宏)· 宏展开机制 · 作用域与#undef
对象式宏
#undef
03
带参宏定义
函数式宏定义/调用 · 括号重要性 · 宏与函数区别
函数式宏
参数括号
04
宏中的特殊运算符
#字符串化 · ##标记粘贴 · 可变参数宏 __VA_ARGS__
#
##
__VA_ARGS__
05
条件编译 (#if, #ifdef, #ifndef, #else, #elif, #endif)
调试开关 · 平台兼容 · 头文件保护符
条件编译
头文件保护
06
预定义宏
__FILE__, __LINE__, __DATE__, __TIME__, __STDC__ · 编译器特定宏
标准预定义
编译器宏
07
#pragma指令
#pragma once · #pragma pack · #pragma message
#pragma
内存对齐
08
#error与#line指令
编译时错误提示 · 行号控制 · 调试辅助
#error
#line
09
宏的副作用与陷阱
参数多次求值 · 宏与分号 · 优先级 · 类型安全
副作用
陷阱
10
宏与const常量的选择
宏常量 vs const · 宏 vs enum · 宏 vs inline · 最佳实践
const
enum
inline
11
X-Macro模式
宏列表定义 · 代码生成 · 寄存器映射/错误码表
X-Macro
代码生成
12
宏实现泛型编程
模拟函数重载 · _Generic关键字 (C11) · 宏与_Generic结合
泛型
_Generic
13
宏实现断言与调试
assert宏原理 · 自定义DEBUG_PRINT · 日志宏设计
断言
调试宏
14
宏实现最小/最大值
经典MAX/MIN · 类型安全版本 · GCC typeof扩展
MAX/MIN
typeof
15
宏实现循环展开
编译时循环优化 · do-while(0)技巧 · Duff's Device
循环展开
Duff's Device
16
宏实现状态机
状态/事件宏定义 · 状态转换表 · 简单状态机框架
状态机
FSM
17
宏实现单元测试框架
测试用例宏 · 测试套件 · 断言宏实现
单元测试
断言
18
宏实现数据结构
链表节点 · 栈/队列 · 哈希表宏封装
数据结构
宏封装
19
宏实现配置系统
编译时配置 · 功能开关 · 模块化宏设计
配置系统
功能开关
20
宏实现代码生成器
重复代码宏生成 · 模板模式 · 代码维护
代码生成
模板宏
21
宏与内联汇编
宏中嵌入汇编 · 平台优化封装 · 内联汇编抽象
内联汇编
平台优化
22
宏实现反射机制
结构体字段宏 · 偏移量计算 · 序列化/反序列化
反射
序列化
23
宏实现错误处理框架
错误码宏 · 错误传播 · 资源清理 (goto cleanup)
错误处理
cleanup
24
宏实现插件系统
插件接口宏 · 插件注册 · 动态加载辅助
插件
动态加载
25
宏实现内存池
内存块宏 · 分配/释放宏 · 内存池封装
内存池
分配宏
26
宏实现位操作
位域宏封装 · 寄存器位操作 · 位掩码生成
位操作
位掩码
27
宏实现CRC/校验和
编译时CRC计算 · 校验和生成 · 数据完整性
CRC
校验和
28
宏实现字符串操作
字符串拼接宏 · 字符串化宏 · 字符串表生成
字符串
拼接宏
29
宏实现编译时计算
编译时斐波那契 · 查找表生成 · 编译时哈希
编译时计算
constexpr
30
宏的综合应用案例
嵌入式项目宏设计 · 需求分析到宏架构 · 最佳实践总结
综合案例
嵌入式