[软件资料] C语言宏拼接运算符的典型使用

[复制链接]
 楼主| forgot 发表于 2025-5-14 13:48 | 显示全部楼层 |阅读模式
在C语言中,##运算符(称为标记拼接运算符)用于宏定义中将两个标记(token)拼接成一个新的标记。它在预处理阶段处理,常用于动态生成变量名、函数名或类型名,以提高代码的复用性和减少冗余。

1、生成函数或类型名:
  1. #define DEFINE_MAX(type) \
  2.     type type##_max(type a, type b) { \
  3.         return a > b ? a : b; \
  4.     }

  5. DEFINE_MAX(int)   // 生成 int_max 函数
  6. DEFINE_MAX(float) // 生成 float_max 函数

2、结合字符串化([size=0.875em]#运算符)生成日志函数:
  1. #define DEFINE_LOG(module) \
  2.     void log_##module(const char* msg) { \
  3.         printf("[%s] %s\n", #module, msg); \
  4.     }

  5. DEFINE_LOG(network) // 生成 log_network 函数
  6. DEFINE_LOG(file)    // 生成 log_file 函数
szt1993 发表于 2025-5-18 20:40 | 显示全部楼层
宏命令的**还是非常必要的
小小蚂蚁举千斤 发表于 2025-5-22 12:53 | 显示全部楼层
底层其实还是汇编的设计
时光贩卖机 发表于 2025-5-22 15:25 | 显示全部楼层
##运算符确实在C语言中非常有用,特别是在需要动态生成函数或变量名时。它简化了代码,提高了可维护性。
AdaMaYun 发表于 2025-5-22 17:33 | 显示全部楼层
汇编还是非常必要的
瞌睡虫本虫 发表于 2025-5-25 09:51 | 显示全部楼层
##运算符确实是一个非常强大的工具,它让代码更加灵活和模块化。你的例子很好地展示了如何使用它来生成函数和日志函数。
再见十分钟 发表于 2025-5-26 10:31 | 显示全部楼层
这个一般不常用
小暖 发表于 2025-5-26 10:32 | 显示全部楼层
一般宏定义的时候可以用一下,不方便查找
村支书 发表于 2025-5-30 08:57 | 显示全部楼层
##运算符有些场合用起来确实比较方便
leslietian 发表于 2025-5-30 08:58 | 显示全部楼层
主要用处就是将两个标记拼接成一个新的标记
kenny01 发表于 2025-5-30 08:59 | 显示全部楼层
没用过,了解一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2064

主题

14492

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部