[求助] STM32中关于结构体成员的赋值问题

forever1314   2016-7-12 10:26 楼主
typedef struct tagIsOutputActivate
{
    u8 AllOutput                :1;      
    u8 IO_GREEN_LED                :1;      
    u8 IO_RED_LED                :1;     
    u8 IO_AMP                    :1;      
    u8 IO_TX_LED                :1;        
    u8 IO_RX_LED                :1;        
    u8 IO_CHPARASET_LED            :1;        
    u8 IO_RADIO_OPEN_LED        :1;      

}stIsOutputActivate;
这种结构体中的成员后面的:1是什么意思额。

回复评论 (26)

2推荐 wugx 

引用: moyanming2013 发表于 2016-7-12 10:48
位域是不能用u8声明的,只能是int型。你C语言基础太差,赶紧看书。

你欠拍,记那些东西干嘛???用时候查不就行了
人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
点赞  2016-7-12 13:52
位域,C语言教科书里面有                                                                             
点赞  2016-7-12 10:33
是的,路过看看,学习一下
磁翻板液位计  V锥流量计
点赞  2016-7-12 10:35
引用: 白手梦想家 发表于 2016-7-12 10:33
位域,C语言教科书里面有

知道了,我去百度,谢谢你。
点赞  2016-7-12 10:45
引用: jscks 发表于 2016-7-12 10:35
是的,路过看看,学习一下

不懂的话正好可以学习一下。
点赞  2016-7-12 10:46
位域是不能用u8声明的,只能是int型。你C语言基础太差,赶紧看书。
点赞  2016-7-12 10:48
引用: moyanming2013 发表于 2016-7-12 10:48
位域是不能用u8声明的,只能是int型。你C语言基础太差,赶紧看书。

你说的我倒是头次听说。。。。
点赞  2016-7-12 11:12
引用: lcofjp 发表于 2016-7-12 11:12
你说的我倒是头次听说。。。。

我确保在C99标准下是这样的。
但C11是否改进了这个有清楚的可以聊聊,但为了兼容性,一般推荐用unsigned int型来声明。
点赞  2016-7-12 11:15
引用: lcofjp 发表于 2016-7-12 11:12
你说的我倒是头次听说。。。。

《C语言程序设计-现代方法 第2版》P367页有关于位域的说明。
点赞  2016-7-12 11:17
学习了,之前都没听说过位域
点赞  2016-7-12 11:38
这是共用体吧,位域。DSP上常见,:1表示占据一位,所以你会看到8个:1
点赞  2016-7-12 11:41
引用: BlackHeart4theW 发表于 2016-7-12 11:41
这是共用体吧,位域。DSP上常见,:1表示占据一位,所以你会看到8个:1

补充一下,第一个:1是最低位的bit,往下bit逐渐左移(就是变大,8421码那种。。),推荐你看看C相关教材详细了解一下,我讲的也有可能不对。
点赞  2016-7-12 11:44
引用: moyanming2013 发表于 2016-7-12 10:48
位域是不能用u8声明的,只能是int型。你C语言基础太差,赶紧看书。

C99中的内容:
A bit-field shall have a type that is a qualified or unqualified version of _Bool, signed int, unsigned int, or some other implementation-defined type.

Allowable bit-field types other than _Bool, signed int, and unsigned int (6.7.2.1).
点赞  2016-7-12 12:04
引用: BlackHeart4theW 发表于 2016-7-12 11:44
补充一下,第一个:1是最低位的bit,往下bit逐渐左移(就是变大,8421码那种。。),推荐你看看C相关教材 ...

好的,谢谢你。
点赞  2016-7-12 13:36
引用: lcofjp 发表于 2016-7-12 04:04
C99中的内容:
A bit-field shall have a type that is a qualified or unqualified version of _Bool,  ...

但是有些编译器是不支持C99特性的,为保证兼容还是使用unsigned int型,具体应该以使用的编译器支持的类型为准吧
刻苦学习,共同进步
点赞  2016-7-12 14:22
引用: wugx 发表于 2016-7-12 13:52
你欠拍,记那些东西干嘛???用时候查不就行了

呵呵                           
点赞  2016-7-12 16:13
引用: moyanming2013 发表于 2016-7-12 10:48 位域是不能用u8声明的,只能是int型。你C语言基础太差,赶紧看书。
本帖最后由 weizhongc 于 2016-7-12 22:40 编辑
点赞  2016-7-12 16:54
引用: wugx 发表于 2016-7-12 13:52
你欠拍,记那些东西干嘛???用时候查不就行了

在编译器里面试一下不就知道了,编译器说yes才是真的对
点赞  2016-7-12 16:55
--你怎么不试试 本帖最后由 weizhongc 于 2016-7-12 22:40 编辑
点赞  2016-7-12 20:18
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复