警告:从不兼容的指针类型传递 '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);
所以对于遇到同样问题的人,这将是您正确处理多维数组指针的方式。
所以我在 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);
所以对于遇到同样问题的人,这将是您正确处理多维数组指针的方式。