01
预处理基础
预处理的作用 · 预处理流程 · 预处理指令分类
基础流程
02
#define 宏定义基础
无参宏定义 · 有参宏定义 · 宏定义的作用域
无参有参作用域
03
#define 高级技巧
宏定义中的括号使用 · do-while(0) 封装 · 宏的副作用
括号do-while副作用
04
#define 与 const 对比
宏与常量的区别 · 宏与枚举的区别 · 宏与函数的区别
const枚举函数
05
#define 与 typedef 对比
宏定义类型与 typedef 的区别 · 常见陷阱
typedef陷阱
06
#define 与 inline 函数
宏与内联函数的性能对比 · 使用场景选择
inline性能
07
#define 与 #undef
宏的取消定义 · 条件编译中的配合使用
#undef条件编译
08
# 和 ## 运算符
字符串化操作符 · 标记粘贴操作符
###预处理
09
可变参数宏
__VA_ARGS__ · ##__VA_ARGS__ · 自定义日志宏
可变参数日志
10
#include 指令
头文件包含机制 · <> 与 "" 的区别 · 头文件保护
头文件包含
11
#if #elif #else #endif
条件编译基础 · 调试开关 · 平台适配
条件编译平台
12
#ifdef 与 #ifndef
宏定义检查 · 头文件保护 · 功能开关
#ifdef#ifndef
13
#if defined() 与 #if !defined()
多条件组合 · 复杂条件判断
defined组合
14
#error 与 #warning
编译时错误与警告 · 静态断言 · 版本检查
#error#warning
15
#line 与 #pragma
行号控制 · 编译器特定指令 · 结构体对齐
#line#pragma
16
#pragma once
单次包含保证 · 与头文件保护的对比 · 跨平台问题
#pragma once跨平台
17
#pragma pack
结构体字节对齐 · 网络协议解析 · 硬件寄存器映射
字节对齐网络协议
18
预定义宏
__FILE__ · __LINE__ · __DATE__ · __TIME__ · __STDC__
预定义调试
19
__func__ 与 __FUNCTION__
函数名宏 · 调试日志 · 断言信息
函数名断言
20
__cplusplus 与 __STDC_VERSION__
C/C++ 混合编译 · 标准版本检测
C++标准
21
__attribute__ 机制
GCC 属性 · 函数属性 · 变量属性 · 类型属性
GCC__attribute__
22
constructor / destructor
__attribute__((constructor)) · ((destructor))
构造析构
23
packed / aligned
__attribute__((packed)) · ((aligned)) · 网络协议头
内存对齐packed
24
deprecated / unused
弃用警告 · 未使用变量抑制
弃用unused
25
__attribute__((weak))
弱符号定义 · 库函数覆盖 · 默认实现
弱符号覆盖
26
__attribute__((format))
printf/scanf 格式检查 · 自定义格式化函数
format检查
27
X-Macro 技术
宏列表 · 代码生成 · 枚举与字符串映射
X-Macro代码生成
28
宏与多文件编程
模块化宏设计 · 全局宏管理 · 宏命名规范
多文件模块
29
宏调试技巧
宏展开查看 · 宏断点 · 宏日志 · 宏测试
调试展开
30
宏的最佳实践
宏设计原则 · 常见陷阱总结 · 代码审查清单
最佳实践审查