0

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

警告:赋值从没有强制转换的指针生成整数”:

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 = %x\n", b[0]);

b[0]... b[1]的意思是用来保存地址uint16_t *g_00;

如何修复此编译器警告?

4

1 回答 1

2

我的意思是使用 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. */
于 2013-06-26T16:49:06.490 回答