1. 程式人生 > >keil也支援匿名結構體、聯合體

keil也支援匿名結構體、聯合體

#pragma anon_unions
typedef union {
        unsigned int num;
        struct {
                unsigned int nLow        :8;
                unsigned int nHigh         :8;
        };
}kkTypedef;

void jjj(void)
{
kkTypedef kknum;
	kknum.num=99;
	kknum.nLow=10;
}


//keil中預設是不支援匿名結構體的,需要編譯指令#pragma anon_unions指名。

但是不支援這樣的匿名結構體

#pragma anon_unions
union {
        unsigned int num;
        struct {
                unsigned int nLow        :8;
                unsigned int nHigh         :8;
        };
};

void jjj(void)
{

	num=99;
	nLow=10;
}


error:  #20: identifier "num" is undefined
error:  #20: identifier "nLow" is undefined

但在IAR裡是可以的,有點不一樣。

補充:好像在GCC編譯器中也是可以的。

補充2:在CCS V5.1中使用MSP430中不能使用以上兩個結構體,不知道在CCS V5.1中MSP430的編譯器是什麼,反正是不支援匿名結構體。