[讨论] 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