BLE_ADVERTISING_DEF(m_advertising); //定义名称为m_advertising的广播模块实例
主要分析这个宏 感叹他们的这种写法。
最终结果
static nrf_sdh_ble_evt_observer_t m_advertising_ble_obs attribute ((section("sdh_ble_observers1"))) attribute((used)) = { . handler = ble_advertising_on_ble_evt, . p_context = &m_advertising };
真的是太牛X了。
问过度娘以后才知道 attribute 可以设置函数的属性。变量的属性。上文中用的参数是section,作用就是把函数放入到指定名字为 sdh_ble_observers1对应的段中。
attribute((used)) = { . handler = ble_advertising_on_ble_evt, . p_context = &m_advertising }; 这个就不懂什么意思了查了好多资料也没搞懂,我猜测是给前面那个函数传递参数用的,把回调函数的地址传递进去,还有结构体也传递进去?