C语言宏定义的一些用法

  1. do {...} while(0):在宏定义中合理使用do-while(0)可以更规范地使用宏定义
/* 没有使用do-while(0)前 */
#define Led_On()    {LED_Enable; LED = 1;}
int main(void)
{
    Led_On();    // 此时,编译会报错,因为替换后是“{LED_Enable; LED = 1;};”多了个分号
}

/* 使用do-while(0) */
#define Led_On()    do{LED_Enable; LED = 1;}while(0)
int main(void)
{
    Led_On();    // 此时,编译正常,替换后为“do{LED_Enable; LED = 1;}while(0);”
}

2. ##:双#号连接宏

/* 不使用"##" */
#define LED0_On()    do{LED0_Enable, LED0 = 1}while(0)
#define LED1_On()    do{LED1_Enable, LED1 = 1}while(0)
#define LED2_On()    do{LED2_Enable, LED2 = 1}while(0)
#define LED3_On()    do{LED3_Enable, LED3 = 1}while(0)
#define LED4_On()    do{LED4_Enable, LED4 = 1}while(0)

/* 使用“##”, 一条宏定义解决,但注意:这里的n不是变量,在必须是固定 */
#define LED_On(n)    do{LED##n##_Enable, LED##n## = 1}while(0)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值