[討論] struct的Initial

看板C_and_CPP作者 (懂得放手..才是王道)時間9年前發表 (2016/04/12 08:08), 9年前編輯推噓0(0010)
留言10則, 2人參與, 最新討論串1/1
各位好, 有一個關於struct Initial的問題請教. 假使我現在定義了struct/union如下: typedef union { unsigned short wWord; struct { bByteH; bByteL; }byte; }WordVar; typedef struct { unsigned char a; unsigned char b; }_defType; 若要在宣告_defType變數的同時Initial, 已知方法如下 _defType AAA = {12, 34}; 假使現在定義struct _defType2如下: typedef struct { unsigned char a; WordVar abc; }_defType2; 如此, 有可能在宣告_defType2變數時,針對bByteH, bByteL進行initial嗎? Ex: _defType2 BBB = {12, ???}; PS: 目前已知可以對wWord進行initial(_defType2 BBB = {12, 0x1234};) PS: Compiler為非C99系統.. 謝謝大家. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.210.106.78 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1460448539.A.7A9.html

04/12 16:35, , 1F
_defType2 BBB = {12, {.byte={1, 0}}};
04/12 16:35, 1F

04/12 16:36, , 2F
提醒你 WordVar 宣告有兩個問題: 你忘了給 bByteH 和
04/12 16:36, 2F

04/12 16:37, , 3F
bByteL 資料型態之外,High 在前還是 Low 在前要看硬體
04/12 16:37, 3F

04/12 16:37, , 4F
x86 是 low byte 在前才對,這叫 little endian
04/12 16:37, 4F

04/13 15:23, , 5F
謝謝S大, 但.byte={1,0};是否在非C99 Compiler不能用呢?
04/13 15:23, 5F
※ 編輯: MaxHaru (218.210.106.78), 04/13/2016 15:38:21

04/13 15:52, , 6F
我在回覆之前就有用gcc無參數(gnu89),ansi,c89都測試過
04/13 15:52, 6F

04/13 15:53, , 7F
它應該是寫在 C89/C90 standard 裡的,但我手邊沒有
04/13 15:53, 7F

04/13 15:53, , 8F
standard 全文 (要花錢買PDF檔) 所以沒辦法引用給你看
04/13 15:53, 8F

04/13 15:54, , 9F
所以你有發生編譯不過的問題? 你的 compiler 是哪一種?
04/13 15:54, 9F

04/13 21:13, , 10F
再次感謝S大, 我是使用Keil C, 似乎沒辦法使用..
04/13 21:13, 10F
文章代碼(AID): #1N3AqRUf (C_and_CPP)