我有以下LCD驱动程序代码,我不确定如何调用此函数
typedef struct {
int16_t X;
int16_t Y;
} Point, * pPoint;
void LCD_PolyLine(pPoint Points, uint16_t PointCount) {
int16_t X = 0, Y = 0;
while(--PointCount) {
X = Points->X;
Y = Points->Y;
Points++;
LCD_DrawUniLine(X, Y, Points->X, Points->Y);
}
}
将函数的第一个参数设为“pPoint Points”是没有意义的。对我而言,它似乎应该是“pPoint * Points”。然后我可以创建一个pPoints数组并将此地址传递给它。
如果不修改它,你怎么称呼这个驱动程序功能呢?
答案 0 :(得分:1)
让函数的第一个参数为
pPoint Points
是没有意义的。
它实际上非常有意义,因为pPoint
被定义为Point*
,即指向Point
的指针。它相当于
void LCD_PolyLine(Point *Points, uint16_t PointCount)
这是正确的签名。您需要做的就是传递一个struct Point
数组,然后是其中的元素数。
答案 1 :(得分:0)
在Point
struct和typedef定义的最后一行,在逗号后面显示* pPoint
。这是将pPoint
类型定义为Point *
的表示法。注意" p" on pPoint
是指针类型的常用表示法。所以你是对的,你通常可以创建一个Point
结构数组并将指针传递给函数。 (注意不要传递指针的地址,这将是Point **
。)