c++ ios_base register_callback方法使用

c++中不常用的东西。

// ios_base_register_callback.cpp 
// compile with: /EHsc 
#include <iostream> 
#include <fstream> 


using namespace std; 


void callback1( ios_base::event e, ios_base& stream, int arg )  
{ 
   cout << "in callback1" << endl; 
   switch ( e )  
   { 
      case ios_base::erase_event: 
         cout << "an erase event" << endl; 
         break; 
      case ios_base::imbue_event: 
         cout << "an imbue event" << endl; 
         break; 
      case ios_base::copyfmt_event: 
         cout << "an copyfmt event" << endl; 
         break; 
   }; 
} 


void callback2( ios_base::event e, ios_base& stream, int arg )  
{ 
   cout << "in callback2" << endl; 
   switch ( e )  
   { 
      case ios_base::erase_event: 
         cout << "an erase event" << endl; 
         break; 
      case ios_base::imbue_event: 
         cout << "an imbue event" << endl; 
         break; 
      case ios_base::copyfmt_event: 
         cout << "an copyfmt event" << endl; 
         break; 
   }; 
} 


int main( )  
{ 
   // Make sure the imbue will not throw an exception 
   // assert( setlocale( LC_ALL, "german" )!=NULL ); 


   cout.register_callback( callback1, 0 ); 
   cin.register_callback( callback2, 0 ); 


   try  
   { 
      // If no exception because the locale's not found, 
      // generate an imbue_event on callback1 
      cout.imbue(locale("german")); 
   } 
   catch(...)  
   { 
      cout << "exception" << endl; 
   } 


   // This will 
   // (1) erase_event on callback1 
   // (2) copyfmt_event on callback2 
   cout.copyfmt(cin); 


   // We get two erase events from callback2 at the end because  
// both cin and cout have callback2 registered when cin and cout 
   // are destroyed at the end of program. 
}

转载于:https://my.oschina.net/wxwHome/blog/98034

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码包含了一系列函数调用和任务创建,用于初始化设备并启动相关功能。下面是每个函数调用的简要解释: 1. `xQueueCreate(10, sizeof(D_MsgData))`:创建一个队列 `g_usif_queue`,队列大小为 10,每个元素大小为 `D_MsgData` 的字节大小。 2. `d_ble_register_callback(ble_user_callback)`:注册 BLE 回调函数 `ble_user_callback`。 3. `d_sensor_data_register_callback(sensor_data_user_callback)`:注册传感器数据回调函数 `sensor_data_user_callback`。 4. `d_timer_register_callback(timer_user_callback)`:注册定时器回调函数 `timer_user_callback`。 5. `d_uart_register_callback(uart_user_callback, LOOKUP_STR_OK, LOOKUP_STR_ERR, LOOKUP_STR_NEW_MSG, CAN_SEND_DATA_2_IOT)`:注册 UART 回调函数 `uart_user_callback`,并传递一些字符串参数。 6. `d_iot_timeout_timer_register_callback(iot_timeout_timer_user_callback)`:注册物联网超时定时器回调函数 `iot_timeout_timer_user_callback`。 7. `d_acc_gpiote_interrupt_disable()`:禁用加速度计 GPIO 中断。 8. `d_lcd_display_str(D_LCD_DISPLAY_STR_BOOT, 0)`:在 LCD 上显示启动信息。 9. `d_led_light_on(D_LED_LIGHT_RED)`:点亮红色 LED 灯。 10. `nrf_delay_us(5000000)`:延迟 5000000 微秒(5秒)。 11. `d_led_light_off(D_LED_LIGHT_RED)`:关闭红色 LED 灯。 12. `d_led_uninit()`:关闭 LED 灯。 13. `d_alarm_off()`:关闭报警功能。 14. `d_acc_gpiote_interrupt_enable()`:启用加速度计 GPIO 中断。 15. `d_power_register_callback(power_off_user_callback)`:注册电源关闭回调函数 `power_off_user_callback`。 16. `d_acc_register_callback(acc_user_callback)`:注册加速度计回调函数 `acc_user_callback`。 17. `d_lcd_clean()`:清空 LCD 屏幕。 18. `xTaskCreate(d_usif_task, "d_usif_task", 256*3, g_usif_queue, 2, &xHandle_usif_task)`:创建一个任务 `d_usif_task`,任务名为 "d_usif_task",任务栈大小为 256*3 字节,传递 `g_usif_queue` 给任务作为参数,优先级为 2,并将任务句柄保存在 `xHandle_usif_task` 中。 19. `configASSERT(xHandle_usif_task)`:确保任务创建成功。 20. `d_sensor_data_send_start()`:启动传感器数据发送。 21. `d_uart_clear_data_buf()`:清空 UART 数据缓冲区。 综上所述,这段代码的作用是初始化设备和相关功能,并创建一个名为 "d_usif_task" 的任务。具体的实现细节可能需要参考相关函数的定义和文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值