我正试图在数组中存储地址映射。
以下代码片段在我的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位宽(如预期)。
没有这个警告我怎么写代码?
最佳答案
没有这个警告我怎么写代码?
就像警告说的,加一个演员
int* c = (int*) addressMap[0];
避免警告
initialization makes pointer from integer without a cast [-Wint-conversion]
但是,如果addressMap的目标是包含指向int的指针,我建议您不要使用
intptr_t
而是直接使用int*
,因为您根本不需要强制转换:int * addressMap[2];
int* a=NULL;
int* b=NULL;
*a=10;
*b=20;
addressMap[0] = a;
addressMap[1] = b;
int* c = addressMap[0];