警告:从不兼容的指针类型传递 'foo' 的参数 x

Warning: passing argument x of 'foo' from incompatible pointer type

所以我在 AVR GCC 中编程,我已经查看了一些关于此警告的类似问题,但我似乎无法找到明确的解决方案。

我在使用多维数组中的数组作为函数的指针参数时收到此警告:

// Prototype
int getneighbours (uint8_t *neix[], uint8_t *neiy[], uint8_t nodex, uint8_t nodey);

// Call
uint8_t neighbours[2][4];
getneighbours (&neighbours[X], &neighbours[Y], nodex, nodey);

// Message
expected 'uint8_t **' but argument is of type 'uint8_t (*)[4]'

我以前一直很害怕在多维数组中使用指针,但我真的很想知道如何避免收到此警告?

此致

我想出了一个解决我自己问题的方法:

// Prototype
void getneighbours (uint8_t (*nei)[2][4], uint8_t nodex, uint8_t nodey);

// Call
uint8_t neighbours[2][4];
getneighbours (&neighbours, nodex, nodey);

所以对于遇到同样问题的人,这将是您正确处理多维数组指针的方式。