做h5哪个网站好,山西网站建设哪家好,百度指数人群画像怎么看,怎样设计网站首页一、使用方法 1.定义一个函数指针 typedef int (*pCallback)(int a, int b);2.定义一个带参的回调函数#xff08;注释部分是普通回调函数#xff0c;不用定义第一步里的函数指针#xff09; //带参
int oneCallback(int a, int b, pCallback p)
//int oneCallback(int a, i…一、使用方法 1.定义一个函数指针 typedef int (*pCallback)(int a, int b);2.定义一个带参的回调函数注释部分是普通回调函数不用定义第一步里的函数指针 //带参
int oneCallback(int a, int b, pCallback p)
//int oneCallback(int a, int b, int (*pCallback)(int a, int b))
{return p(a, b);//return pCallback(a, b);
}3.不带参或者是固定值或使用全局变量的使用注释部分同上解释
//特定值
int twoCallback(pCallback p)
//int twoCallback(int (*pCallback)(int a, int b))
{return p(2,8);//return pCallback(2, 8);
}4.实现回调函数 // 回调函数
int add(int a, int b)
{return ab;
}//第一种 带参
int (*p)(int a, int b) add;
p(0,6);
//第一种 带参
oneCallback(1, 7, add);//第二种 特定值
twoCallback(add);二、实例说明
以std::for_each()为例
templateclass InputIt, class UnaryFunction
UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f)
{for (; first ! last; first) {f(*first);}return f;
}int print(int i)
{return i;
}int add(int i)
{return i 1;
}int sub(int i)
{return i - 1;
}std::vectorint vec{0,1,2,3,4,5,6};
std::for_each(vec.begin(), vec.end(), print); //return _0_1_2_3_4_5_6
std::for_each(vec.begin(), vec.end(), add);
std::for_each(vec.begin(), vec.end(), print); //return _1_2_3_4_5_6_7
std::for_each(vec.begin(), vec.end(), sub);
std::for_each(vec.begin(), vec.end(), print); //return _-1_0_1_2_3_4_5//函数指针
typedef void (*pcap_handler)(u_char * user, const struct pcap_pkthdr *header, const u_char *pkt_data);//调用回调函数处理数据并判断是否调用回调函数
int pcap_loop(pcap_t * handler, int cnt, pcap_handler callBack, u_char * user);/* 回调函数用来处理数据包 */
void packet_handler(u_char *user, const struct pcap_pkthdr *header, const u_char *pkt_data)
{Q_UNUSED(dumpfile);_data_ data;data.tv_sec header-ts.tv_sec;data.tv_usec header-ts.tv_usec;data.len header-len;//data.pkt_data pkt_data;data.pkt_data (const u_char*)malloc(data.len1);memcpy((void*)data.pkt_data, pkt_data, data.len);all_data_vec.push_back(data);
}//使用
pcap_loop(handle, 0, packet_handler, NULL)