完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
小弟最近好郁闷,在51里面不存在这个问题,在STM32(IAR)编译时出错了
const u8 a; u8 *addr=a; //此处提示错误 printf("address=%x",addr); 51里面直接&a 地址就出来了,M3里面怎么得到a的地址都不行。各位有啥好办法没 |
|
相关推荐
15个回答
|
|
|
|
|
|
|
|
|
楼主是取址符没加啊,51直接 &a,32也一样是直接 &a 就可以了
const u8 a; u8 *addr = &a; printf("address=%x",addr); |
|
|
|
|
|
不行,你们说的都不对,在51 keil里面可以 在STM32 IAR中 CONST变量与51的code要求不同 会提示 Error[Pe144]: a value of type "u16 const *" cannot be used to initialize an entity of type "u16 *" C:UsersAdministratorDesktop新板实验SOFT-0817Usermain.c 16 |
|
|
|
|
|
u8 *addr=a; 改成这样试试 u8 const *addr = a;或者 const u8 *addr = a;
|
|
|
|
|
|
这个还真不知道,是不是固定的flash段
|
|
|
|
|
|
楼主是取址符没加啊,51直接 &a,32也一样是直接 &a 就可以了
const u8 a; u8 *addr = (u8 *)&a; printf("address=%x",addr); 不是不行,是类型检查更严格了,不同类型的都必须加强制类型转换 |
|
|
|
|
|
你的回答完全正确。类型检查很严格,不能把地址复制给变量,必须强制转换成同类型的
|
|
|
|
|
|
你要把类型检查搞成最严格那就没法转换。
|
|
|
|
|
|
因为任何形式的转换都不允许。
|
|
|
|
|
|
unsigned int aa = (unsigned int)&a;
|
|
|
|
|
|
多多尝试啊,或者看帮助文件。
|
|
|
|
|
|
还有那个const类型应该在Flash里面,不在内存。
|
|
|
|
|
|
二楼的那个是读取地址的命令吗
|
|
|
|
|
|
只要格式可能不一致的必须强制转换,不然编译器不给你过。
|
|
|
|
|
|
取地址运算符就行
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 09:54 , Processed in 1.416250 second(s), Total 100, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1214