野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17668|回复: 3

关于帖子《关于宏定义和反斜杠的用法》的两个问题,向大家求教!

[复制链接]
发表于 2014-12-1 14:22:47 | 显示全部楼层 |阅读模式
在帖子《关于宏定义和反斜杠的用法》中,提到宏定义的用法时,有两处地方我没想明白:

第一个问题:

  1. <P><FONT size=4 face=楷体>9、得到一个变量的地址(word宽度)
  2. #define B_PTR( var ) ( (byte *) (void *) &(var) )
  3. #define W_PTR( var ) ( (word *) (void *) &(var) )</FONT></P>
复制代码
其中,(byte *) (void *) &(var)是什么意思?为什么会有两个*?如果没有“(byte *) (void *) ”会怎样?

第二个问题:
  1. <FONT size=4 face=楷体,楷体_GB2312>18、对于IO空间映射在存储空间的结构,输入输出处理
  2. #define inp(port) (*((volatile byte *) (port)))
  3. #define inpw(port) (*((volatile word *) (port)))
  4. #define inpdw(port) (*((volatile dword *)(port)))
  5. #define outp(port, val) (*((volatile byte *) (port)) = ((byte) (val)))
  6. #define outpw(port, val) (*((volatile word *) (port)) = ((word) (val)))
  7. #define outpdw(port, val) (*((volatile dword *) (port)) = ((dword) (val)))</FONT>
复制代码
其中,(*((volatile byte *) (port)))两个*号又是什么意思?

希望大家多多指教,非常感谢!





回复

使用道具 举报

发表于 2014-12-1 14:37:56 | 显示全部楼层
其中,(*((volatile byte *) (port)))两个*号又是什么意思?

volatile byte *把port强制转化成volatile byte类型的指针,再加个*就是对port这个地址进行取指针内容的操作
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-1 14:48:11 | 显示全部楼层
flyleaf 发表于 2014-12-1 14:37
其中,(*((volatile byte *) (port)))两个*号又是什么意思?

volatile byte *把port强制转化成volatile  ...

哦,明白了。非常感谢!,那第一个问题是什么意思呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-2 10:57:35 | 显示全部楼层
自己顶一个。第一个问题有人知道吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 21:40 , Processed in 0.025510 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表