|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
uU/OS的一個數(shù)據(jù)類型問題(移植uC/OS) |
| 作者:zmycool 欄目:ARM技術(shù) |
在將uC/ OS - II 移植到ARM 處理器上時,首先進(jìn)行基本配置和數(shù)據(jù)類型定義. 重新定義數(shù)據(jù)類型是為了增加代碼的可移植性,因為不同的編譯器所提供的同一數(shù)據(jù)類型的數(shù)據(jù)長度并不相同,例如int型,在有的編譯器中是16 位,而在另外一些編譯器中則是32 位. 所以,為了便于移植,需要重新定義數(shù)據(jù)類型,如INT32U 代表無符號32 位整型. typedef unsigned int INT8U ,就是定義一個8 位的無符號整型數(shù)據(jù)類型. ========================================== 我的疑問是, 1。 從上面的意思來看,數(shù)據(jù)類型是有編譯器決定的,不是由芯片決定的! 2。如果是由編譯器決定的,那每個編譯器具體是用什么樣的數(shù)據(jù)類型,如何查看得知呢?比如KeilC, ADS 等 3。 假如現(xiàn)在typedef unsigned int INT8U ,那就是說將在某個編譯器里unsiged int 是8位的。如果將這個代碼放在其他編譯器里用,就要注意unsigned int到底是不是8位的了。對嗎? 4。 typedef unsigned int INT8U 這樣做純粹是為了方便直接而設(shè)定的一個宏,如果不宏定義也是可以的。 以上理解對不對!懇請你的回復(fù)!謝謝 |
| 2樓: | >>參與討論 |
| 作者: guet 于 2006/11/6 18:38:00 發(fā)布:
說兩句 C語言沒有硬性規(guī)定數(shù)據(jù)類型在內(nèi)存中占的字節(jié)數(shù),只是要求 LONG >= int >= SHORT ,具體是由編譯器跟據(jù)處理器的字長決定的,通常就是LONG 為四字節(jié) SHORT 為兩字節(jié)而int可以是兩字節(jié)或者四節(jié)字,一般字長為四字節(jié)(也就是32位)的處理器,編譯器將int定義為四字節(jié),而處理器字長不是32位的,像16位和8位機(jī)通常將int定義為兩字節(jié)。CHAR類型的就不用說了。 拿int類型的數(shù)據(jù)來說 假如你這么定義一個變量 int a; 。本來你期望 a 是一個四字節(jié)長的整型,但是換了編譯器和處理器后就有可能變成兩字節(jié)長的了。為了增加可移植性,通常用typedef定義來代替不可移植的數(shù)據(jù)類型。通常你可以這么定義a的類型 INT32 a,而INT32則根據(jù)編譯器用typedef定義為已有的四字節(jié)長的數(shù)據(jù)類型。 以上是個人的理解,沒有考證過,哈哈 |
|
| 3樓: | >>參與討論 |
| 作者: zmycool 于 2006/11/7 10:44:00 發(fā)布:
多謝你的回復(fù)! 你的意思是 數(shù)據(jù)類型在內(nèi)存中占的字節(jié)數(shù)是有編譯器決定的,不是由芯片決定的! |
|
| 4樓: | >>參與討論 |
| 作者: computer00 于 2006/11/7 10:58:00 發(fā)布:
當(dāng)然是由編譯器來決定了。 當(dāng)然也要在符合常規(guī)的前提下。 * - 本貼最后修改時間:2006-11-7 10:59:29 修改者:computer00 |
|
| 5樓: | >>參與討論 |
| 作者: zmycool 于 2006/11/7 11:28:00 發(fā)布:
謝謝! 謝謝!樓上的兄弟好象寫過ARM的一個OS。我記得在哪兒見到過你的帖子。記不清楚了! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |