今天看uc/gui的源码
typedef void tRect2TextRect (LCD_RECT * pRect);
struct tLCD_APIList_struct {
tLCD_DrawBitmap * pfDrawBitmap;
tRect2TextRect * pfRect2TextRect;
};
这里显然是把tRect2TextRect当成了一个新变量在使用。
以前真没看到过这种typedef
根据谭浩强C语言中只有关于typedef---函数指针。typedef void (*POINTER)(...,...)
我假设这两个语句是一样的编了个程序,发现结果还是对的。
既然是这种情况,为什么不用 typedef void(*tRect2TextRect)(LCD_RECT * pRect);?
想了一下,在C中函数名代表该函数的入口地址。
按照谭浩强C中的理解。tRect2TextRect就是新变量名,该变量名的类型就是指向一个void f(LCD_RECT * pRect)的函数。
而typedef void(*tRect2TextRect)(LCD_RECT * pRect);中的tRect2TextRect为指向void f(LCD_RECT * pRect)的指针类型。