STM32:将地址映射存储在数组中
STM32: storing a map of addresses in an array
我正在尝试将地址映射存储在数组中。
以下代码片段在我的 STM32F767ZI 上按预期运行,但编译时出现警告...
intptr_t addressMap[2];
int* a=NULL;
int* b=NULL;
*a=10;
*b=20;
addressMap[0]=(intptr_t) a;
addressMap[1]=(intptr_t) b;
int* c=addressMap[0];
编译时出现警告:
initialization makes pointer from integer without a cast [-Wint-conversion]
在最后一行 (int* c=addressMap[0];
)。
我还尝试了 uint32_t
和 int32_t
作为 addressMap
数组的数据类型。同样的警告。
根据此文档 (http://www.keil.com/support/man/docs/armcc/armcc_chr1359125009502.htm)
地址是 32 位宽(如预期的那样)。
如何在没有此警告的情况下编写代码?
How may I write my code without this warning?
正如警告所说,只需添加一个演员就可以了
int* c = (int*) addressMap[0];
避免警告 initialization makes pointer from integer without a cast [-Wint-conversion]
但是,如果 addressMap 的目标是包含指向 的指针,我建议您不要使用 intptr_t
而是直接 int*
int ,多亏了你根本不需要 cast :
int * addressMap[2];
int* a=NULL;
int* b=NULL;
*a=10;
*b=20;
addressMap[0] = a;
addressMap[1] = b;
int* c = addressMap[0];
我正在尝试将地址映射存储在数组中。
以下代码片段在我的 STM32F767ZI 上按预期运行,但编译时出现警告...
intptr_t addressMap[2];
int* a=NULL;
int* b=NULL;
*a=10;
*b=20;
addressMap[0]=(intptr_t) a;
addressMap[1]=(intptr_t) b;
int* c=addressMap[0];
编译时出现警告:
initialization makes pointer from integer without a cast [-Wint-conversion]
在最后一行 (int* c=addressMap[0];
)。
我还尝试了 uint32_t
和 int32_t
作为 addressMap
数组的数据类型。同样的警告。
根据此文档 (http://www.keil.com/support/man/docs/armcc/armcc_chr1359125009502.htm) 地址是 32 位宽(如预期的那样)。
如何在没有此警告的情况下编写代码?
How may I write my code without this warning?
正如警告所说,只需添加一个演员就可以了
int* c = (int*) addressMap[0];
避免警告 initialization makes pointer from integer without a cast [-Wint-conversion]
但是,如果 addressMap 的目标是包含指向 的指针,我建议您不要使用 intptr_t
而是直接 int*
int ,多亏了你根本不需要 cast :
int * addressMap[2];
int* a=NULL;
int* b=NULL;
*a=10;
*b=20;
addressMap[0] = a;
addressMap[1] = b;
int* c = addressMap[0];