打印

求助,PICC 位域结构及共同体,编译错误!

[复制链接]
1589|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
robotlai|  楼主 | 2013-10-15 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
union {
struct {
unsigned b0: 1;
unsigned b1: 1;
unsigned b2: 1;
unsigned b3: 1;
unsigned b4: 1;
unsigned b5: 1;
unsigned : 2; //最高两位保留
} oneBit;
//unsigned char allBits;
} myFlag;
//需要存取其中某一位时可以
myFlag.oneBit.b3=1; //b3 位置1
//一次性将全部位清零时可以
myFlag.allBits=0; //全部位变量清0

请高手指点下,在下先谢啦,急!

相关帖子

沙发
yewuyi| | 2013-10-15 14:48 | 只看该作者
例如:


#define              KeySingle            sysflag.bit0
#define              KeyContinue          sysflag.bit1
#define              SetOneClick          sysflag.bit2
#define              RstOneClick          sysflag.bit3
#define              WriteEeprom          sysflag.bit4
#define              CoolHotDelayEnd      sysflag.bit5
#define              CoolHotLedFlash      sysflag.bit6
#define              SoundOff             sysflag.bit7
#define              DayNight             sysflag.bit8
#define              StempErr             sysflag.bit9
#define              Sovertemp            sysflag.bit10
#define              RtccSet              sysflag.bit11
#define              RtccStop             sysflag.bit12
#define              SetLedOnStart        sysflag.bit13
#define              WorkLedOnStart       sysflag.bit14
//*****************************************************************************
typedef              struct               BYTE_BIT
{     
uchar                bit0:1;
uchar                bit1:1;
uchar                bit2:1;
uchar                bit3:1;
uchar                bit4:1;
uchar                bit5:1;
uchar                bit6:1;
uchar                bit7:1;
uchar                bit8:1;
uchar                bit9:1;
uchar                bit10:1;
uchar                bit11:1;
uchar                bit12:1;
uchar                bit13:1;
uchar                bit14:1;
uchar                bit15:1;
}BYTEBIT;


不要乱写一气,往往是乱写得越多,自己越是不知道怎么查错,形容说话的最高境界是言简意赅,用它来形容写代码要求也是如此,尽量用最简单的代码描述最复杂的问题。

使用特权

评论回复
板凳
robotlai|  楼主 | 2013-10-15 15:08 | 只看该作者
谢谢楼上的回复,如何做共同体,几个位域结构放在一起。

使用特权

评论回复
地板
yewuyi| | 2013-10-15 15:25 | 只看该作者

typedef              union
{
int                  MenuCase[rtcS_v+1];
uchar                MenuCaseByte[(rtcS_v+1)*2];
}MENU;

使用特权

评论回复
5
robotlai|  楼主 | 2013-10-15 15:36 | 只看该作者
typedef struct one_Bit{
unsigned char b0: 1;
unsigned char b1: 1;
unsigned char b2: 1;
unsigned char b3: 1;
unsigned char b4: 1;
unsigned char b5: 1;
unsigned char : 2; //最高两位保留
} oneBit;

oneBit.b3=1; //b3 位置1

编译后错误提示如下:请楼下帮我修改一下,如何在修改??
Error   [285] H:\4060KWPROG\4060KW_main.c; 50.7 no identifier in declaration
Error   [314] H:\4060KWPROG\4060KW_main.c; 50.7 ";" expected

使用特权

评论回复
6
yewuyi| | 2013-10-15 17:44 | 只看该作者
robotlai 发表于 2013-10-15 15:36
typedef struct one_Bit{
unsigned char b0: 1;
unsigned char b1: 1;

朋友,typedef只是声明了,你还的定义一个变量啊。


BYTEBIT              sysflag;

#define              KeySingle            sysflag.bit0
#define              KeyContinue          sysflag.bit1
#define              SetOneClick          sysflag.bit2
#define              RstOneClick          sysflag.bit3
#define              WriteEeprom          sysflag.bit4
#define              CoolHotDelayEnd      sysflag.bit5
#define              CoolHotLedFlash      sysflag.bit6
#define              SoundOff             sysflag.bit7
#define              DayNight             sysflag.bit8
#define              StempErr             sysflag.bit9
#define              Sovertemp            sysflag.bit10
#define              RtccSet              sysflag.bit11
#define              RtccStop             sysflag.bit12
#define              SetLedOnStart        sysflag.bit13
#define              WorkLedOnStart       sysflag.bit14
//*****************************************************************************
typedef              struct               BYTE_BIT
{     
uchar                bit0:1;
uchar                bit1:1;
uchar                bit2:1;
uchar                bit3:1;
uchar                bit4:1;
uchar                bit5:1;
uchar                bit6:1;
uchar                bit7:1;
uchar                bit8:1;
uchar                bit9:1;
uchar                bit10:1;
uchar                bit11:1;
uchar                bit12:1;
uchar                bit13:1;
uchar                bit14:1;
uchar                bit15:1;
}BYTEBIT;

使用特权

评论回复
7
robotlai|  楼主 | 2013-10-15 21:29 | 只看该作者
谢谢楼上,功能可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

粉丝