c - STM32:将地址映射存储在数组中
问题描述
我正在尝试将地址映射存储在数组中。
以下代码片段在我的 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]
intptr_t
但是,如果addressMapint*
的目标是包含指向int的指针,我建议您不要直接使用,因为您根本不需要强制转换:
int * addressMap[2];
int* a=NULL;
int* b=NULL;
*a=10;
*b=20;
addressMap[0] = a;
addressMap[1] = b;
int* c = addressMap[0];
推荐阅读
- ejs - 如何在我的 profile.ejs 文件中添加一个链接来更改页脚上方的下部?
- php - ERR_INVALID_RESPONSE 从控制器 laravel 生成 csv 文件
- ios - IOS - 如何加载视图只锁定主屏幕而不包括操作栏?
- php - 同时运行的投票系统未全部保存
- apache - 带有通配符子域的反向代理
- arrays - Powershell:if语句,在数组中获取null
- javascript - 一键点击“重新加载多页”
- flutter - Flutter:当我横向播放视频时,App Bar 显示如何使用 Flutter_Youtube_player 避免这种情况
- r - 如何使用 mutate 根据“如果,那么”条件定义新变量?
- node.js - 我在让我的 Nodejs docker 应用程序在 heroku 上运行时遇到问题