当前位置: 技术问答>linux和unix
共用体中定义结构体
来源: 互联网 发布时间:2016-06-23
本文导语: 小弟有一个问题想向各位请教: union FLAGS_UNION { struct { unsigned int CannotClaimAddress : 1; unsigned int WaitingForAddressClaimContention : 1; unsigned int GettingCommandedAddress : 1; unsigned int GotFirstDataPacket...
小弟有一个问题想向各位请教:
union FLAGS_UNION {
struct {
unsigned int CannotClaimAddress : 1;
unsigned int WaitingForAddressClaimContention : 1;
unsigned int GettingCommandedAddress : 1;
unsigned int GotFirstDataPacket : 1;
unsigned int ReceivedMessagesDropped : 1;
};
unsigned char FlagVal;
};
typedef union FLAGS_UNION FLAG;
这是我看到的一段程序,他使用 FLAG->CannotClaimAddress 作变量,但我在linux C中就不行,不知各位高手有什么看法?
union FLAGS_UNION {
struct {
unsigned int CannotClaimAddress : 1;
unsigned int WaitingForAddressClaimContention : 1;
unsigned int GettingCommandedAddress : 1;
unsigned int GotFirstDataPacket : 1;
unsigned int ReceivedMessagesDropped : 1;
};
unsigned char FlagVal;
};
typedef union FLAGS_UNION FLAG;
这是我看到的一段程序,他使用 FLAG->CannotClaimAddress 作变量,但我在linux C中就不行,不知各位高手有什么看法?
|
这个不对吧,union里面只有一个结构体定义,并没有结构体变量的定义。
另外,FLAG是个类型名,怎么能:“FLAG->CannotClaimAddress”呢?
另外,FLAG是个类型名,怎么能:“FLAG->CannotClaimAddress”呢?
|
一个类型FLAG是不能直接访问子成员CannotClaimAddress的。
楼主在Windows下面用的是什么编译器?
是VC吧
楼主在Windows下面用的是什么编译器?
是VC吧
|
同意这个观点
里面的结构体没有变量,恐怕不能运行
|
楼主用的是C++的语法吧
|
看似c++,匿名Union成员。
|
struct {
unsigned int CannotClaimAddress : 1;
unsigned int WaitingForAddressClaimContention : 1;
unsigned int GettingCommandedAddress : 1;
unsigned int GotFirstDataPacket : 1;
unsigned int ReceivedMessagesDropped : 1;
};
unsigned char FlagVal
结构体名呢
unsigned int CannotClaimAddress : 1;
unsigned int WaitingForAddressClaimContention : 1;
unsigned int GettingCommandedAddress : 1;
unsigned int GotFirstDataPacket : 1;
unsigned int ReceivedMessagesDropped : 1;
};
unsigned char FlagVal
结构体名呢
|
楼主要这样做,好象意图不明确呀!
|
这是我看到的一段程序,他使用 FLAG->CannotClaimAddress 作变量,但我在linux C中就不行,不知各位高手有什么看法?
他使用 FLAG->CannotClaimAddress 作变量是什么意思??
你前面就是一个union而已啊。union里分别是一个5元素的位域struct,和一个char数据而已。
没理解你想问什么?
他使用 FLAG->CannotClaimAddress 作变量是什么意思??
你前面就是一个union而已啊。union里分别是一个5元素的位域struct,和一个char数据而已。
没理解你想问什么?
|
讲的不错, 顶,加接分。