touch。h 语法请教
在touch.h中的定义如何解释?typedef void (*rt_touch_calibration_func_t)(rt_uint16_t x, rt_uint16_t y); 我个不明白的。
if ((touch->calibrating == RT_TRUE) && (touch->calibration_func != RT_NULL))
{
/* callback function */
touch->calibration_func(emouse.x, emouse.y);这个函数我也不明白,C太差了。
} typedef void (*rt_touch_calibration_func_t)(rt_uint16_t x, rt_uint16_t y); 定义一个函数指针类型。
touch->calibration_func(emouse.x, emouse.y); 就是运行 此结构体中,此函数指针所指向的函数 学习了,还不知道typedef还有这个用法 回复【1楼】ele_eye
typedef void (*rt_touch_calibration_func_t)(rt_uint16_t x, rt_uint16_t y); 定义一个函数指针类型。
touch->calibration_func(emouse.x, emouse.y); 就是运行 此结构体中,此函数指针所指向的函数
-----------------------------------------------------------------------
我弄不清楚,它到底指向哪一个函数。的 看完下面程序,你应该明白了!可以复制到VC工程中编译,调试,这样理解透彻。
#include <stdio.h>
typedef void (*rt_touch_calibration_func_t)(int x, int y); //定义函数指针,注意:rt_touch_calibration_func_t相当于一种指针类型,它指向一个带有两个参数,并且返回值为void的函数。
void func(int m,int n)//定义一个func函数,注意函数名是指针!
{
printf("sum=%d\n",m+n);
}
struct Touch//定义一个结构体
{
char calibrating;
rt_touch_calibration_func_t calibration_func;//定义一个结构体成员变量。注意:变量类型为rt_touch_calibration_func_t,
//变量名为 calibration_func,变量名可以换成其他名字。
};
void main()
{
struct Touch tch;//定义一个Touch结构体变量tch,给tch分配内存空间。该空间在内存的栈区
struct Touch *touch=&tch;//定义一个Touch结构体指针变量touch,指向tch。该指针变量空间在内存的栈区
touch->calibrating=1; //给touch成员calibrating赋值
touch->calibration_func = func;//将已定义函数func的地址赋给touch成员calibration_func,注意func是一个地址
//不能这样赋值: touch->calibration_func = func(1,2);
tch.calibration_func(1,2);//调用成员calibration_func,实际上调用的是func 函数
touch->calibration_func(1,2);//由于touch指向tch,因此他们行为一致
}
页:
[1]