on_exit

本文介绍了on_exit函数的使用方法及示例。on_exit用于在程序正常结束前调用指定的清理函数,配合exit函数使用。文章包含函数原型、参数解释、返回值说明以及一个具体的C语言示例程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 on_exit(设置程序正常结束前调用的函数)

  相关函数 _exit,atexit,exit   表头文件 #include<stdlib.h>   定义函数 int on_exit(void (* function)(int, void*),void *arg);   函数说明   on_exit()用来设置一个程序正常结束前调用的函数。当程序通过   调用exit()或从main中返回时,参数function所指定的函数会先   被调用,然后才真正由exit()结束程序。参数arg 指针会传给参   数function函数,详细情况请见范例。   返回值 如果执行成功则返回0,否则返回-1,失败原因存于errno中。   范例   #include<stdlib.h>   void my_exit(int status,void *arg)   {   printf(“before exit()!/n”);   printf(“exit (%d)/n”,status);   printf(“arg = %s/n”,(char*)arg);   }   main()   {   char * str=”test”;   on_exit(my_exit,(void *)str);   exit(1234);   }   执行   before exit()!   exit (1234)
struct pca954x_platform_mode { int adap_id; unsigned int deselect_on_exit:1; unsigned int class; }; /* Per mux/switch data, used with i2c_register_board_info */ struct pca954x_platform_data { struct pca954x_platform_mode *modes; int num_modes; }; static struct pca954x_platform_mode pca9546_mode[] = { { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, }; static struct pca954x_platform_mode pca9548_mode[] = { { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, { .deselect_on_exit = 1, }, }; static struct pca954x_platform_data pca9546_data = { .modes = pca9546_mode, .num_modes = ARRAY_SIZE(pca9546_mode), }; static struct pca954x_platform_data pca9548_data = { .modes = pca9548_mode, .num_modes = ARRAY_SIZE(pca9548_mode), }; static struct i2c_board_info pca954x_board_info[] = { {I2C_BOARD_INFO("pca9546", 0), .platform_data = &pca9546_data}, {I2C_BOARD_INFO("pca9548", 0), .platform_data = &pca9548_data}, }; int i2c_pca954x_register(i2c_chip_t dev) { struct i2c_adapter *adap = NULL; struct i2c_client *client = NULL; adap = i2c_get_adapter(dev.io_type); if(NULL == adap) { printk("i2c get adapter %d.\n", dev.io_type); return -1; } switch(dev.chip_type) { case GPIO_PCA9546: pca954x_board_info[0].addr = dev.addr; client = i2c_new_client_device(adap, &pca954x_board_info[0]); break; case GPIO_PCA9548: pca954x_board_info[1].addr = dev.addr; client = i2c_new_client_device(adap, &pca954x_board_info[1]); break; default: break; } if(!client) { printk("Can't create device\n"); return -1; } return 0; } 在我这个现在动态分配的基础上修改成指定分配
最新发布
06-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值