NRF SDK14协议栈里有个奇怪的C用法
一个C文件里调用如下NRF_SDH_BLE_OBSERVER(m_ble_observer, BSP_BTN_BLE_OBSERVER_PRIO, ble_evt_handler, NULL);
在一个.h文件里定义
#define NRF_SDH_BLE_OBSERVER(_name, _prio, _handler, _context) \
STATIC_ASSERT(NRF_SDH_BLE_ENABLED, "NRF_SDH_BLE_ENABLED not set!"); \
STATIC_ASSERT(_prio < NRF_SDH_BLE_OBSERVER_PRIO_LEVELS, "Priority level unavailable."); \
NRF_SECTION_SET_ITEM_REGISTER(sdh_ble_observers, _prio, static nrf_sdh_ble_evt_observer_t _name) =\
{ \
.handler = _handler, \
.p_context = _context \
}
另一个C文件
NRF_SDH_STACK_OBSERVER(m_nrf_sdh_ble_evts_poll, NRF_SDH_BLE_STACK_OBSERVER_PRIO) =
{
.handler = nrf_sdh_ble_evts_poll,
.p_context = NULL,
};
感觉真是绕啊,兜了这么一圈难道其实就是调用nrf_sdh_ble_evts_poll 这个函数????熟悉的大神请给解释一下 这是为了实现跨平台移植,因为内核只要去调.handler就行了,不用管你是哪个平台的什么东西。 坐等大神
页:
[1]