看板 C_and_CPP 關於我們 聯絡資訊
各位好, 有一個關於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
Schottky: _defType2 BBB = {12, {.byte={1, 0}}}; 04/12 16:35
Schottky: 提醒你 WordVar 宣告有兩個問題: 你忘了給 bByteH 和 04/12 16:36
Schottky: bByteL 資料型態之外,High 在前還是 Low 在前要看硬體 04/12 16:37
Schottky: x86 是 low byte 在前才對,這叫 little endian 04/12 16:37
MaxHaru: 謝謝S大, 但.byte={1,0};是否在非C99 Compiler不能用呢? 04/13 15:23
※ 編輯: MaxHaru (218.210.106.78), 04/13/2016 15:38:21
Schottky: 我在回覆之前就有用gcc無參數(gnu89),ansi,c89都測試過 04/13 15:52
Schottky: 它應該是寫在 C89/C90 standard 裡的,但我手邊沒有 04/13 15:53
Schottky: standard 全文 (要花錢買PDF檔) 所以沒辦法引用給你看 04/13 15:53
Schottky: 所以你有發生編譯不過的問題? 你的 compiler 是哪一種? 04/13 15:54
MaxHaru: 再次感謝S大, 我是使用Keil C, 似乎沒辦法使用.. 04/13 21:13