guwu454 发表于 2012-8-23 10:20:08

关于头文件里面联合体,结构体的问题,我是菜鸟,一直...

我在看msp430头文件的时候看到很多这样的定义
__no_init volatile union
{
unsigned char IFG1;   /* Interrupt Flag 1 */

struct
{
    unsigned char WDTIFG          : 1; /**/
    unsigned char OFIFG         : 1; /**/
    unsigned char                : 2;
    unsigned char NMIIFG          : 1; /**/
}IFG1_bit;
} @0x0002;


enum {
WDTIFG          = 0x0001,
OFIFG         = 0x0002,
NMIIFG          = 0x0010
};
我不明白的是 unsigned char OFIFG         : 1; /**/
像这种定义里面的“:”是用来干嘛的?
另外,我如果想要给这个IFG1赋值,我是不是直接写IFG1=WDTIFG+ NMIIFG;就可以了?
觉得头文件里很多东西在C语言里面都没有定义,挺奇怪的。
先谢谢大家!

右手执香 发表于 2012-8-23 15:15:20

unsigned char OFIFG         : 1;
这个是位操作, 即OFFIFG占char中的其中一位

另外,我如果想要给这个IFG1赋值,我是不是直接写IFG1=WDTIFG+ NMIIFG;就可以了?
可以是可以,不过IFG1是个char型,而WDTIFG, NMIIFG都为16位,赋值了也只能把低八位赋给IFG1。

guwu454 发表于 2012-8-23 17:40:31

右手执香 发表于 2012-8-23 15:15 static/image/common/back.gif
unsigned char OFIFG         : 1;
这个是位操作, 即OFFIFG占char中的其中一位



谢谢你的解答!那么我想知道标准的赋值方法是什么呢?

mored 发表于 2012-8-23 18:31:37

本帖最后由 mored 于 2012-8-23 18:33 编辑

看错了,不能删,所以编辑一下

xizi 发表于 2012-8-23 19:39:11

另一种赋值方法是:
IFG1_bit.WDTIFG = 1;
IFG1_bit.NMIIFG= 1;
页: [1]
查看完整版本: 关于头文件里面联合体,结构体的问题,我是菜鸟,一直...