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之间的代码就不会被编译,相应的函数就不能使用。这个写法就可以通过宏定义来控制相应驱动的使能。

发布了9 篇原创文章 · 获赞 5 · 访问量 8507

猜你喜欢

转载自blog.csdn.net/m0_38091095/article/details/105713295
今日推荐