求解这行代码的意思,#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))

2019-07-21 06:39发布

如题,这个宏定义到底是定义 MEM_ADDR(addr)为一个数组,还是定义MEM_ADDR(addr)为*((volatile unsigned long  *)(addr))数组里面的值?求大神回答。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
ianhom
1楼-- · 2019-07-21 06:47
把addr这个地址进行(volatile unsigned long *)类型转换后,用这个类型取这个地址上的值
destiny、
2楼-- · 2019-07-21 06:59
 精彩回答 2  元偷偷看……
destiny、
3楼-- · 2019-07-21 11:13
应该是读取memory的某地址上的值,二维数组,只不过memory的行地址是unsigned long,因为是高速读取的内容,所以用volatile修饰,不知道这样的理解对不对
solo
4楼-- · 2019-07-21 12:27
楼上说的都没错,要看具体情况。如果addr是数组的起始地址,就乐意当数组用;如果addr是变量的地址,就当变量用。表面意义就是传一个指针(地址)进去,然后取指针指向地址的值。
回忆的海
5楼-- · 2019-07-21 16:21
同意二楼
dzy1996t
6楼-- · 2019-07-21 20:59
在《ARM Cotrex-M3权威指南(英文)》中有解释

一周热门 更多>