记录一个宏的使用技巧,使用宏生成一定规则的字符串

记录一个宏的使用技巧

背景

最近在项目中遇到一个问题,项目中一个字段对外的协议是毫无规律的整形值,内部需要将这个协议映射成方便处理的数据结构,想到的办法是把协议值先枚举出来,然后解析枚举变量。由于枚举变量本身不能直接解析,所以该为解析枚举变量的名字。比如

enum
{
   
	ONLY_TYPE1 = 1,
	ONLY_TYPE2 = 2,
	ONLY_TYPE3 = 3,
	ONLY_TYPE4 = 4,
	TYPE1_AND_TYPE2 = 5,
	TYPE1_AND_TYPE2_AND_TYPE3 = 6,
	TYPE1_AND_TYPE2_AND_TYPE3_AND_TYPE3 = 7,
};

只要保证枚举变量名字按照这种规律去命名,就可以去解析它。但是嘛,写代码吗,你就算在这里注释要这么写,也还是会出现就不看你注释来的情况,毕竟这种命名规则不能算是规范。所以呢,想通过自动生成变量名的方式强制约束,你不要自己去命名,按照我给的接口传参数就行了。

宏的使用

基本还是依靠宏连接符号##,因为参数数量是可变的,还要解析参数数量,这部分参考了这位大佬的代码,
https://blog.csdn.net/10km/article/details/80760533
基本思路是把各个参数数量的宏先定义出来,然后定义一个入口宏,根据参数数量再替换成相应的宏。
上代码,

//这个宏用来获取参数列表数量
#define ARG_COUNT(...) _ARG_COUNT_PRIVATE(0, ##__VA_ARGS__,\
	 9,  8,  7,  6,  5,  4,  3,  2,  1,  0)
#define<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值