tag 标签: 枚举

相关博文
  • 热度 17
    2016-2-16 16:43
    879 次阅读|
    0 个评论
    知识拓展: 枚举类型(enum) : 在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量 说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚 举”类型的变量取值不能超过定义的范围。   结构体数组 : struct Timer  //先定义一个Timer类型结构体,包含延时时间和回调函数变量 {     ushort  Delay;     function CallBackFuction; }; struct Timer idata Block ; //然后定义结构体数组,相当于有四个Timer 类型的结构体,分别通过其数组元素各成员的引用形式调用, 如第二个成员的变量delay的调用形式为: Block .Delay --;   函数指针的声明方法为: 函数类型 (标志符指针变量名)(形参列表); 注1:“函数类型”说明函数的返回类型,“(标志符指针变量名 )”中的括号不能省,若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:   int func(int x);  //声明一个函数 int (*f) (int x); //声明一个函数指针 f = func;   /*将func函数的首地址赋给指针f , 赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。*/ (*f)(8);//func函数的函数指针调用形式;
  • 热度 21
    2012-6-4 11:35
    2098 次阅读|
    0 个评论
    typedef enum { ERROR = 0, SUCCESS = !ERROR } ErrorStatus; 这个代码怎么解释? 这个语句的作用是为数据类型 enum { ERROR = 0, SUCCESS = !ERROR } 定义一个别名ErrorStatus,这样以后定义变量时就写ErrorStatus a;就可以了,而不用写较长的enum{ERROR=0,SUCCESS=!ERROR} a;了.   typedef的用于其实很简单,但是当typedef后面跟个枚举变量这么大一陀代码的时候就不不知怎么理解了。真是不应该。   枚举是一个被命名的整型常数的集合, 枚举在日常生活中很常见。     例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY, 就是一个枚举。     枚举的说明与结构和联合相似, 其形式为:     enum 枚举名{     标识符 ,     标识符 ,     ...     标识符 ,     } 枚举变量;     如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺     次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次     加1的规则确定其值。     例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。     enum string{x1, x2, x3, x4}x;     当定义改变成:     enum string     {     x1,     x2=0,     x3=50,     x4,     }x;     则x1=0, x2=0, x3=50, x4=51     注意:     1. 枚举中每个成员(标识符)结束符是",", 不是";", 最后一个成员可省略     ","。     2. 初始化时可以赋负数, 以后的标识符仍依次加1。     3. 枚举变量只能取枚举说明结构中的某个标识符常量。     例如:     enum string     {     x1=5,     x2,     x3,     x4,     };     enum strig x=x3;     此时, 枚举变量x实际上是7。     enum   关键字在c中用的是比较多的,它常用来定义标记整型常量,你去看许多操作系统的源代码,都有用这个关键字来一次定义许多标记整型常量,其实它相当于定义一个整型常量的表,方便应用时查找。当然他的大部分功能都可以被宏定义代替,不过毕竟enum关键字定义的东东是支持类型检查的,可以用编译器来发现一些错误(enum定义的只能是整型的常量表)  
  • 热度 17
    2010-1-18 11:47
    4743 次阅读|
    1 个评论
         前不久花了2300大银败了个HD-USB12协议分析仪(肉痛…)。不过还蛮好用,以后做USB固件开发就方便多了。     看到21ic坛子里arthur0561大虾发了一系列USB协议入门总结的文章,向他(OR她?)表示一下敬意。我也准备用手头这台协议分析仪以实例和图解的方式描述一下USB协议的相关知识,希望对初学USB的童鞋有些帮助。     废话少说,首先图解一下USB枚举过程。 ----------------------------------------------------------------- 一、总线复位及向默认地址0发送GET_DESCRIPTOR指令包,请求设备描述。如(图一)所示:                                      (图一) 1)Index :表示USB插入总线复位 2)Index :表示主机向默认地址发送GET_DESCRIPTOR指令包,详细信息也抓出来了,如(图二)所示:        (图二) 3)Index :表示设备向主机发送设备描述数据Index 4)Index :表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答; ----------------------------------------------------------------- 二、再次复位总线及向设备发送SET_ADDRESS指令包,设置设备地址。如(图三)所示:                                     (图三) 1)Index :表示再次总线复位,该复位自动完成,不是手工插拔USB完成 2)Index :表示主机向默认地址发送SET_ADDRESS指令包,详细信息如(图四)所示:                 (图四) 3)Index :表示设备完成SET_ADDRESS指令后,给主机发送一个空应答; ----------------------------------------------------------------- 三、向第二步设定的设备地址发送GET_DESCRIPTOR指令包,请求设备描述。如(图五)所示:                                         (图五) 1)Index :表示主机向地址01发送GET_DESCRIPTOR指令包,详细信息见(图六)            (图六) 2)Index :表示设备向主机发送设备描述数据Index 3)Index :表示设备向主机发送设备描述数据Index 4)Index :表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答; ----------------------------------------------------------------- 四、向第二步设定的设备地址发送GET_DESCRIPTOR指令包,请求配置描述。如(图七)所示:                                    (图七) 1)Index :表示主机向地址01发送GET_DESCRIPTOR指令包,详细信息见(图八)           (图八) 2)Index :表示设备向主机发送配置描述数据Index 3)Index :表示主机完成GET_DESCRIPTOR指令后,给设备发送一个空应答; ----------------------------------------------------------------- 五、重复向第二步设定的设备地址发送GET_DESCRIPTOR指令包,取完所有设备描述及配置描述; ----------------------------------------------------------------- 六、向第二步设定的设备地址发送SET_CONFIGURATION指令包,设置配置描述。如(图九)所示:                                   (图九) 1)Index :表示主机向地址01发送SET_CONFIGURATION指令包,详细信息见(图十)                (图十) 2)Index :表示设备完成SET_CONFIGURATION指令后,给主机发送一个空应答 至此,枚举过程结束,设备可通过驱动与主机通信了。     以上的USB枚举过程是根据现有特定设备捕获得到,并不完整涉及到USB协议的所有指令包,如GET_STATUS指令包、CLEAR_FEATURE指令包、SET_FEATURE指令包、SET_DESCRIPTOR指令包、GET_CONFIGURATION指令包、GET_INTERFACE指令包、SET_INTERFACE指令包、SYNCH_FRAME指令包等。       PDF文档下载: http://forum.eet-cn.com/downloadAttachment.jspa?messageID=1200664364attachmentId=29138pageUserId=8731679306userID=8731679306
相关资源
  • 所需E币: 1
    时间: 2023-7-10 15:44
    大小: 214.08KB
    上传者: 张红川
    22联合体与枚举.pdf
  • 所需E币: 1
    时间: 2022-7-31 10:34
    大小: 15.68MB
    上传者: xyzzyxaaa
    C语言高级数据类型_联合体和枚举.zip
  • 所需E币: 0
    时间: 2022-3-10 21:52
    大小: 241KB
    上传者: samewell
    联合体和枚举技术资料PPT.ppt
  • 所需E币: 1
    时间: 2020-5-25 15:22
    大小: 25.03KB
    上传者: Argent
    VB是早期比较流程的编程语言,VisualBasic由微软公司开发,是世界上使用人数最多的语言。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。感兴趣的网友们快来下载,练练手吧。
  • 所需E币: 4
    时间: 2019-12-25 21:13
    大小: 180.5KB
    上传者: rdg1993
    主要介绍嵌入USB控制核的51系列单片机EZ-USB的特性及传输与控制机理。该内核可帮助USB外设开发者完成USB协议中规定的80%~90%的通信工作,是USB外设研制者的理想选择。文中还对使用不同的USB芯片组成的应用系统作了比较……
  • 所需E币: 4
    时间: 2019-12-25 16:22
    大小: 82.58KB
    上传者: 2iot
    软件研究室培训(C语言)PPT……
  • 所需E币: 3
    时间: 2019-12-25 12:18
    大小: 58.79KB
    上传者: 238112554_qq
    C语言进阶-第五讲数据结构与链表……
  • 所需E币: 5
    时间: 2020-1-16 14:31
    大小: 82.5KB
    上传者: 二不过三
    USB枚举过程USB设备枚举过程USB设备在正常工作以前,第一件要做的事就是枚举.枚举就是让HOST认得这个设备,并且为该设备准备其所请求的资源,建立好主机和设备之间的信息沟通机制.USB枚举是一系列有序而又连贯的过程,哪怕只有一丝丝请求或者自报家门时出错,甚至于在规定的时间内答不上来,设备就会被停机.枚举自然就不会成功.这一连贯性不允许中途打断,简单地说,在USB设备枚举期间,不能用仿真器的单步功能来跟踪双方交换的数据流.这是因为在枚举成功以前,设备处于不确定状态,而且占据着唯一的公共资源----0地址.HOST决不允许一个模糊设备长期霸占0地址,将重试三次之后放弃(鬼佬也玩好事不过三的把戏,在即将进行的枚举过程中,好事也要过三才算数!)观察USB枚举过程,只有另找途径,下面是使用LOG2001USBDEMOKIT开发板printf得到的数据.在理解这些数据以前,请对照PDIUSBD12手册及参阅LOG2001Firmware.这些数据基本上概括了USB协议书第九章……
  • 所需E币: 3
    时间: 2020-1-6 14:03
    大小: 707.02KB
    上传者: wsu_w_hotmail.com
    接口工作室USB开发板的枚举过程……