我對C相當陌生,正試圖用七段顯示器編寫一些基本應用程序。在聲明的絕對地址,一個8位端口,我可以寫的東西,如:在微芯片上聲明/處理輸出端口
typedef char *port8ptr;
#define OUT_ADR 0x400
#define OUT *((port8ptr) OUT_ADR)
,然後簡單地設置可變出像
OUT = 0x80;
獲得十六進制80到端口。但是,上面的代碼究竟意味着什麼?也就是說,爲什麼要定義一個指針(第一行),然後將該地址轉換爲指針(?!)的指針?它顯然有效,但我真的不喜歡使用我無法理解的例子中的代碼。
另一種方式他們做了類型轉換爲與線
((unsigned char *) 0x400)
但我真的不明白,要麼。
非常感謝提前!這裏
阿克塞爾
謝謝,我想我現在得到它!所以基本上,我們對「(port8ptr)OUT_ADR」這行的操作是將地址轉換爲指針,然後將它解引用,以便在表達式的前面用asterix實際上將某些東西寫入端口? – user2950764
是的,就是這樣。 –