nrf51822驱动文件中NRF_MODULE_ENABLED()的含义

在nrf51822的SDK12.3.0这个版本中,里面的很多驱动文件的C文件中都会有#if NRF_MODULE_ENABLED(xx)这个条件编译,NRF_MODULE_ENABLED()的原型是

#define NRF_MODULE_ENABLED(module) \
    ((defined(module ## _ENABLED) && (module ## _ENABLED)) ? 1 : 0)

这是一个宏定义,其中的##表示将将module这个变量的值与_ENABLE连接起来,比如NRF_MODULE_ENABLED(I2S)就表示((defined(I2S_ENABLED) && (I2S_ENABLED)) ? 1 : 0),意思是如果定义了I2S_ENABLED,并且I2S_ENABLED值不为0,那么这个式子的值就为1,否则就为0,所以只要定义了I2S_ENABLED,并且I2S_ENABLED不为0,那么#if NRF_MODULE_ENABLED(I2S)这个条件编译就能通过,否则#if到#endif之间的代码就不会被编译,相应的函数就不能使用。这个写法就可以通过宏定义来控制相应驱动的使能。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值