前言
所有技术的学习,第一步都是先整理招式,等招式熟练了,再学习内功。最后融会贯通。这次整理一下公司代码中函数指针的用法。
第一步:定义一个回调函数
注意到:
1、输入参数是void *型,这样好处是今后如果只想传入一个参数,那直接char *强转即可,如果涉及到多个参数,可以定一个结构进去,真正做到函数通用
2、输出参数是void **好处自然不用说,输出的内容完全自己定义
3、下面的函数指针通用性很强
typedef int (*hikos_callback) (
enum storage_action_e action_e, const long id, void *inbuffer, void **outbuffer);
第二步:公共函数调用回调函数
1、定义一个公共函数来调用上述函数指针,可以让多个小组协同开发
2、公共函数的后续参数,都是函数指针的参数
ret = hikos_storage(hikos_ceph, global_action, global_command, global_inbuffer, (void *)&outbuffer);
公共函数 函数实现
int hikos_storage(hikos_callback callback_f,
enum storage_action_e action_e, const long id, void *inbuffer, void **outbuffer)
{
int ret = 0;
int fd = -1;
int file_seek = 0;
cs_file_t *p_cs_file = NULL;
int action_value = 0;
long command_value = 0;
char command_str[64] = {0};
p_cs_file = malloc(sizeof(cs_file_t));
if (!p_cs_file)
{
common_print(PRINT_ALERT, "malloc error");
ret = ERROR_MALLOC;
goto out;
}
memset