打印
[软件资料]

C语言宏拼接运算符的典型使用

[复制链接]
190|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
forgot|  楼主 | 2025-5-14 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在C语言中,##运算符(称为[size=16.002px]标记拼接运算符)用于宏定义中将两个标记(token)拼接成一个新的标记。它在预处理阶段处理,常用于动态生成变量名、函数名或类型名,以提高代码的复用性和减少冗余。

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

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

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

DEFINE_LOG(network) // 生成 log_network 函数
DEFINE_LOG(file)    // 生成 log_file 函数

使用特权

评论回复
沙发
szt1993| | 2025-5-18 20:40 | 只看该作者
宏命令的**还是非常必要的

使用特权

评论回复
板凳
小小蚂蚁举千斤| | 2025-5-22 12:53 | 只看该作者
底层其实还是汇编的设计

使用特权

评论回复
地板
时光贩卖机| | 2025-5-22 15:25 | 只看该作者
##运算符确实在C语言中非常有用,特别是在需要动态生成函数或变量名时。它简化了代码,提高了可维护性。

使用特权

评论回复
5
AdaMaYun| | 2025-5-22 17:33 | 只看该作者
汇编还是非常必要的

使用特权

评论回复
6
瞌睡虫本虫| | 2025-5-25 09:51 | 只看该作者
##运算符确实是一个非常强大的工具,它让代码更加灵活和模块化。你的例子很好地展示了如何使用它来生成函数和日志函数。

使用特权

评论回复
7
再见十分钟| | 2025-5-26 10:31 | 只看该作者
这个一般不常用

使用特权

评论回复
8
小暖| | 2025-5-26 10:32 | 只看该作者
一般宏定义的时候可以用一下,不方便查找

使用特权

评论回复
9
村支书| | 2025-5-30 08:57 | 只看该作者
##运算符有些场合用起来确实比较方便

使用特权

评论回复
10
leslietian| | 2025-5-30 08:58 | 只看该作者
主要用处就是将两个标记拼接成一个新的标记

使用特权

评论回复
11
kenny01| | 2025-5-30 08:59 | 只看该作者
没用过,了解一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1976

主题

14128

帖子

58

粉丝