如何修复编译器错误': warning: assignment makes integer from pointer without a cast'



下面的代码给了我一个警告:

警告:赋值使指针中的整数不带强制转换":

uint16_t b[4];
uint16_t *g_00;
uint16_t *g_01;
uint16_t *g_10;
uint16_t *g_11;

b[0] = g_00;
b[1] = g_01;
b[2] = g_10;
b[3] = g_11;
printf ("add = %xn", b[0]);

我想用b[0]... b[1]保存uint16_t *g_00; 的地址

如何修复此编译器警告?

我本想用b[0]。。。b[1]保存uint16_t*g_00的地址

要将地址存储在b的条目中,需要将其声明为指针数组:

uint16_t ** b[4];
uint16_t * g_00;
...
b[0] = &g_00; /* Stores g_00's address. */

更新:

OP声明:

b[0] = g_00;

是否存储g_00的地址,而是存储g_00本身携带的值。

如果这是有意的(与存储g_00'地址相反),则b的正确声明为:

uint16_t * b[4];
uint16_t * g_00;
...
b[0] = g_00; /* Stores g_00's value. */

相关内容

最新更新