完善资料让更多小伙伴认识你,还能领取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里面,不在内存。
|
|
|
|
二楼的那个是读取地址的命令吗
|
|
|
|
只要格式可能不一致的必须强制转换,不然编译器不给你过。
|
|
|
|
取地址运算符就行
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
990 浏览 2 评论
STM32CUBEMX(13)--SPI,W25Q128外部Flash移植
2013 浏览 0 评论
OV7670摄像头使用串口发送数据到另一个板子上的lcd,出现花屏
2025 浏览 1 评论
1373 浏览 0 评论
801 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-20 13:57 , Processed in 1.120420 second(s), Total 70, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号