博士
最后登录1970-1-1
在线时间 小时
注册时间2014-3-7
|
在帖子《关于宏定义和反斜杠的用法》中,提到宏定义的用法时,有两处地方我没想明白:
第一个问题:
- <P><FONT size=4 face=楷体>9、得到一个变量的地址(word宽度)
- #define B_PTR( var ) ( (byte *) (void *) &(var) )
- #define W_PTR( var ) ( (word *) (void *) &(var) )</FONT></P>
复制代码 其中,(byte *) (void *) &(var)是什么意思?为什么会有两个*?如果没有“(byte *) (void *) ”会怎样?
第二个问题:
- <FONT size=4 face=楷体,楷体_GB2312>18、对于IO空间映射在存储空间的结构,输入输出处理
- #define inp(port) (*((volatile byte *) (port)))
- #define inpw(port) (*((volatile word *) (port)))
- #define inpdw(port) (*((volatile dword *)(port)))
- #define outp(port, val) (*((volatile byte *) (port)) = ((byte) (val)))
- #define outpw(port, val) (*((volatile word *) (port)) = ((word) (val)))
- #define outpdw(port, val) (*((volatile dword *) (port)) = ((dword) (val)))</FONT>
复制代码 其中,(*((volatile byte *) (port)))两个*号又是什么意思?
希望大家多多指教,非常感谢!
|
|