Re: 用C如何一個變數佔3個BYTE?
|
||||
---|---|---|---|---|
資深會員
|
奇怪?
不是有 short long的變數型態嗎 那就是3byte的變數啦 不過,開板的沒提到用的是哪一套 C compilier 支不支援該型態, 要請自行查看手冊 不過我用的這個是有支援的 不支援的話, 用long 不就好了, 3byte能計算的數字,4byte也一定可以吧
發表於: 2008/6/6 14:38
|
|||
|
Re: 用C如何一個變數佔3個BYTE?
|
||||
---|---|---|---|---|
高級會員
|
再C語言裏,是沒有3個BYTE長度的型別(TYPE),所以當然會有錯誤.long型別是4BYTE組成,才能組成union.
要不然就要自訂一個3BYTE型別,再用自定的型別,再去組union.
發表於: 2008/6/5 14:41
|
|||
|
Re: 用C如何一個變數佔3個BYTE?
|
||||
---|---|---|---|---|
資深會員
|
大家好:
感謝回應,compiler還是有問題!=> union AD_TAG { long I; char CH[4]; }; 而且也不能這樣設=> union AD_TAG { long I; char CH[3]; }; Thanks.
發表於: 2008/6/5 12:48
|
|||
|
Re: 用C如何一個變數佔3個BYTE?
|
||||
---|---|---|---|---|
高級會員
|
試試看union(共同空間)符合不符合你的需求,如下:<br />union AD_TAG { int I; char CH[2]; };<br /><br />union AD_ATG TEST;<br /><br />TEST.CH[0]=0xaa; //8位元HI byte存取<br />TEST.CH[1]=0xaa; //8位元Low byte存取<br /><br />TEST.I=32768;//16位元存取<br /><br />或是<br />union AD_TAG { long I; char CH[4]; };<br /><br />union AD_ATG TEST;<br /><br />TEST.CH[0]=0xaa; //8第1位元存取<br />TEST.CH[1]=0xaa; //8第2位元存取<br />TEST.CH[2]=0xaa; //8第3位元存取<br />TEST.CH[3]=0xaa; //8第4位元存取<br /><br /><br />TEST.I=131072;//32位元存取<br /><br /><br />
發表於: 2008/6/5 10:12
|
|||
|
Re: 用C如何一個變數佔3個BYTE?
|
||||
---|---|---|---|---|
資深會員
|
大家好:
感謝回應,但會產生錯誤=> Error [741] D:\Work\TEST\MICRCHIP\TS_914C\MAIN.C; 46. bitfield too large (24 bits) or Error [264] D:\Work\TEST\MICRCHIP\TS_914C\MAIN.C; 45.10 bad bitfield type 我想: char 8bits int 16 bits long 32 bits 所以compiler並不能如此用. Thanks.
發表於: 2008/6/5 8:00
|
|||
|
Re: 用C如何一個變數佔3個BYTE?
|
||||
---|---|---|---|---|
資深會員
|
struct examine
{ int val:24; }; // 在簡易的 16/32bit CPU 下也許有問題(address error) 見您發言多屬於觀念與語法上的問題,建議不訪上些相關課程,有互動之下效果會比較好,大學所開的相關進修課應該有不少。may google it ?
發表於: 2008/6/4 21:46
|
|||
|
用C如何一個變數佔3個BYTE?
|
||||
---|---|---|---|---|
資深會員
|
大家好:
如題,不知該怎麼設才能達到! 煩請告知. Thanks.
發表於: 2008/6/4 16:21
|
|||
|