[討論] struct的Initial

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

Links booklink

Contact Us: admin [ a t ] ucptt.com