我有下面的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点“,这是没有意义的。在我看来,应该是"pPoint *Point“。然后,我可以创建一个pPoints数组并将这个地址传递给它。
否则,您将如何调用此驱动程序功能而不修改它?
发布于 2016-01-17 00:21:33
函数的第一个参数是
pPoint Points是没有意义的。
这实际上非常合理,因为pPoint被定义为Point*,即指向Point的指针。它相当于
void LCD_PolyLine(Point *Points, uint16_t PointCount)这是正确的签名。您所需要做的就是传递一个struct Point数组,然后是其中的元素计数。
发布于 2016-01-17 00:26:28
在Point结构定义的最后一行中,逗号后面是* pPoint。这是将类型pPoint定义为Point *的符号。注意,pPoint上的"p“是指针类型的常用表示法。所以,您是对的,您通常只需创建一个Point结构数组,并将指针传递给函数。(请注意不要传递指针的地址,这将是一个Point **。)
https://stackoverflow.com/questions/34833670
复制相似问题