【問題描述】 在編寫arm裸機程式,常會用到如下巨集定義:
#define rgpfcon (*(volatile unsigned *)0x56000050)
這個巨集定義到底是什麼意思呢?
【分析】
先分析一下*0x56000050,這是不是對位址為0x56000050進行解引用操作?其實這個是非法的。因為0x56000050是常量,不是位址。對乙個常量進行解引用是錯誤的。再看一下(*(volatile unsigned *)0x56000050)就容易弄明白了,在常量0x56000050前加乙個volatile unsigned *其實是做了乙個強制型別轉換,將常量轉換為無符號整形指標,這時就可以解引用了。至於volatile,是提示編譯器不要優化掉該變數。
嵌入式指標常量
問題描述 在編寫arm裸機程式,常會用到如下巨集定義 這個巨集定義到底是什麼意思呢?分析 先分析一下 0x56000050,這是不是對位址為0x56000050進行解引用操作?其實這個是非法的。因為0x56000050是常量,不是位址。對乙個常量進行解引用是錯誤的。再看一下 volatile uns...
嵌入式LinuxC基礎 指標(一)
1.指標的算術運算 指標 整數,這類表示式的結果型別也是指標。指標 只有當兩個指標都指向同乙個陣列中的元素時,才允許從乙個指標減去另乙個指標。兩個指標相減的結果的型別是有符號的整數型。2.指標的關係運算 前提是他們指向同乙個陣列中的元素。3.間接引用 對於已說明的變數來說,變數名就是變數值的直接引用...
初識嵌入式 嵌入式開發概述
1 什麼是嵌入式技術 1 嵌入式軟體與非嵌入式軟體的區別?答 嵌入式軟體是結合作業系統之上做的開發 非嵌入式軟體是做的裸機開發。裸機 沒有作業系統 2 嵌入式開發與微控制器開發的區別?答 區別 是否有作業系統。拓展 答 優點 解決了軟體的移植性 解決了開發人員的能力的劃分問題。提供了豐富的網路協議 ...