宏定义 # ## 的使用方法

#define log(x) #a

将宏参数转化为字符串
prinf(log(111))
==>结果为111

#define temp(x) temp_##a

将##前后的标记进行合并
int temp(1);
==>这个变量的名字为temp_1

宏定义的串口的DEBUG的使用

C99模式
C99模式--方法一:
#ifdef DEBUG_ON
	#define DEBUG(fmt,args...) printf("%s==>%s(%d) : "#fmt"\r\n",__TIME__,__FILE__,(uint)__LINE__,##args...)
#else 
	#define DEBUG(fmt,args...)
#endif
C99模式--方法二:
#ifdef DEBUG_ON
	#define DEBUG(fmt,...) printf("%s==>%s(%d) : "#fmt"\r\n",__TIME__,__FILE__,(uint)__LINE__,__VA_ARGS__)
#else 
	#define DEBUG(fmt,...)
#endif

C89模式(不支持可变长宏)
#ifdef DEBUG_ON
	#define DEBUG(fmt,args) printf("%s==>%s(%u) : "#fmt"\r\n",__TIME__,__FILE__,(uint)__LINE__,args)
#else 
	#define DEBUG(fmt,args)
#endif

宏的展开问题

#define x(a,b) a##b;
#define y(c) #c
此时调用y(x(1,2))不会进行展开而输出"x(1,2)"

如果要进行展开操作,可以使用

#define x(a,b) a##b;
#define y(c) #c
#define temp(c) y(c)//内部没有参数而不会被阻止

此时调用temp(x(1,2))会进行展开而输出"12"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值