阅读:2158回复:4
一个ISP1582固件的语法问题
以下是philips提供的ISP1582固件中定义的一个union,但是我看不懂它的语法,尤其是“IRQL_1 unsigned char reserved1 : 1;”这一句。
请教了,谢谢! #define IRQL_1 #define IRQL_0 typedef union _ISP1581FLAGS { struct _ISP1581FSM_FLAGS { IRQL_1 unsigned char reserved1 : 1; IRQL_1 unsigned char suspend : 1; IRQL_0 unsigned char configuration : 1; IRQL_0 unsigned char remote_wakeup : 1; IRQL_0 unsigned char testmodeen : 1; IRQL_0 unsigned char testmode : 3; IRQL_1 unsigned char DCP_state : 4; IRQL_1 unsigned char CONTROL_HANDLE_DONE : 1; //true iso IRQL_1 unsigned char ISO_state : 3; IRQL_1 unsigned char ISO_CONFIG : 1; } bits; unsiged long value; } ISP1581FLAGS; |
|
沙发#
发布于:2004-04-19 13:21
以下是philips提供的ISP1582固件中定义的一个union,但是我看不懂它的语法,尤其是“IRQL_1 unsigned char reserved1 : 1;”这一句。 很基本的C语言语法问题,看来你C语言还不行。 《 #define IRQL_1 #define IRQL_0 》 说明下面的IRQL_1、IRQL_0基本没什么意义了,不用讨论。 对 IRQL_1 unsigned char reserved1 : 1; IRQL_1 unsigned char suspend : 1; IRQL_0 unsigned char configuration : 1; IRQL_0 unsigned char remote_wakeup : 1; IRQL_0 unsigned char testmodeen : 1; IRQL_0 unsigned char testmode : 3; 表示这几个数据共占用1个字节D[7-0],其中 reserved1 代表D[0] 1bit suspend 代表D[1] 1bit configuration 代表D[2] 1bit remote_wakeup 代表D[3] 1bit testmodeen 代表D[4] 1bit testmode 代表D[7-5] 3bits 这种结构体定义方法在寄存器定义中很常用 |
|
|
板凳#
发布于:2004-04-20 23:34
谢谢!我的C还真不行,见笑了。
关于几个数据共占用1个字节(即位段)我在书上看到了。但是IRQL_1、IRQL_0既然没什么意义为什么还要这么做?有什么用吗,比如在多平台移值方面? |
|
地板#
发布于:2004-04-21 13:12
谢谢!我的C还真不行,见笑了。 就我所知道的来说有两种意义: 1.可以用在多平台移植方面; 2.表明一定的意义;例如DDK中的“IN ,OUT”只是表明数据的方向。 |
|
|
地下室#
发布于:2004-04-22 09:53
我的理解
irql应该是int request level的意思 ...........IRQL_0是低电平?IRQL_0是高电平?可能 这种定义估计更多的是从程序可读性的角度出发,正如楼上所说,如WINDOW程序中的IN,OUT/ |
|