C 语言中宏的正常用法

💡 原文中文,约1900字,阅读约需5分钟。
📝

内容提要

宏是在编译前由预处理器处理的替换规则,分为简单替换和函数风格。简单宏通过标识符替换为一系列tokens,函数宏则允许参数替换。常用宏如min、max和swap,能提高代码的效率和可读性。

🎯

关键要点

  • 宏是在编译前由预处理器处理的替换规则,分为简单替换和函数风格。
  • 简单宏通过标识符替换为一系列tokens,函数宏允许参数替换。
  • 常用宏如min、max和swap,能提高代码的效率和可读性。
  • 简单宏的定义格式为 #define identifier replacement-list。
  • 函数风格宏的定义格式为 #define identifier (a1, a2, ... an) replacement-list。
  • 使用宏可以在预处理期替换常量,如 int bigarray [MAXN]; 中的 MAXN 被替换为 10001。
  • 函数形式的宏常用于实现复杂的逻辑,如 min、max 和 swap。
  • swap 宏使用 do … while(0) 来确保多条语句合并为一条,避免条件执行问题。
  • likely 和 unlikely 宏用于优化编译器的跳转预测,提高代码效率。
  • container_of 宏用于从结构体成员指针获取包含该成员的结构体指针。
➡️

继续阅读