【发布时间】:2014-01-07 18:26:32
【问题描述】:
我是 C 的新手,正在尝试编写一些带有七段显示器的基本应用程序。在声明绝对地址时,对于 8 位端口,我可以编写如下内容:
typedef char *port8ptr;
#define OUT_ADR 0x400
#define OUT *((port8ptr) OUT_ADR)
然后简单地写出类似的变量
OUT = 0x80;
获取十六进制 80 到端口。但是上面的代码到底是什么意思?也就是说,为什么要定义一个指针(第一行),然后将地址转换为指向指针的指针(?!)?它显然有效,但我不太喜欢使用我无法理解的示例中的代码。
他们进行类型转换的另一种方式是使用行
((unsigned char *) 0x400)
但老实说我也不明白。
非常感谢!
阿克塞尔
【问题讨论】:
标签: c microprocessors