69,368
社区成员
发帖
与我相关
我的任务
分享
//在一个打印机的程序里看到这样的代码(程序在打印机的编译器里编译没有问题),觉得很奇怪,
//大家看下代码是否合法,大家是否见过这样的用法
//.h
typedef struct
{
unsigned char bit0 : 1;
unsigned char bit1 : 1;
unsigned char bit2 : 1;
unsigned char bit3 : 1;
unsigned char bit4 : 1;
unsigned char bit5 : 1;
unsigned char bit6 : 1;
unsigned char bit7 : 1;
} Register;
typedef union
{
char byte;
Register bits;
} xdata Mix_Reg;//此处xdata和Mix_Reg怎么理解?在VC6中会报错
typedef union
{
char byte;
Register bits;
} SFR_Reg;
//.c
unsigned int xdata PrtAreaDot;//变量的类型是什么?
unsigned int xdata PrtAreaRight;
unsigned int xdata PrtAreaLeft;
typedef struct
{
unsigned char bit0 : 1;
unsigned char bit1 : 1;
unsigned char bit2 : 1;
unsigned char bit3 : 1;
unsigned char bit4 : 1;
unsigned char bit5 : 1;
unsigned char bit6 : 1;
unsigned char bit7 : 1;
} Register;
typedef union
{
char byte;
Register bits;
} xdata Mix_Reg; //标准不允许这样声明吧。
typedef union
{
char byte;
Register bits;
} SFR_Reg; //这里定义了一个新的数据类型SFR_Reg。
//.c
SFR_Reg PrtAreaDot; //这里声明了一个SFR_Reg型的变量。
typedef union
{
char byte;
Register bits;
} xdata Mix_Reg;