关于函数指针和结构体一起的用法
想到单片机中的中断处理不好多样化,一直通过函数指针传递,今天想通过函数指针实现多样化,在中断中放一个要执行的函数指针,在外面可以改变此指针指向的函数。配合结构体的使用,感受到面向对象中class的存在了。
typedef int (*pFunc)(int);//定义一个函数指针类型 int add(int a) { return a + a; } int pow(char a) { int b= a * a; return b; } void call(pFunc func,int b) {//函数指针作为参数传递,此时面临函数的参数无法传递的问题,可以另用参数b来传 cout << func(b) << endl; } typedef struct { int a; char b; int (*callA)(int); int (*callB)(char); }Setup;//结构体类型定义 Setup timSetup = {300,200,add,pow};//结构体定义并初始化,将两个前面定义的函数赋给两个函数指针 void callBack(void) { cout << timSetup.callA(timSetup.a) << endl;//执行结构体中的函数 cout << timSetup.callB(timSetup.b) << endl; } int main() { callBack();//执行回调函数
}