[求助] 有两个类型定义有点不懂,希望大神能帮帮我。

胡豆豆的春天   2017-5-1 19:21 楼主
这两个有什么区别呢?这两个里面的struct和enum都表示的什么意思?这两个都应该怎么样应用呢? 本帖最后由 胡豆豆的春天 于 2017-5-1 19:37 编辑
  • QQ图片20170501191833.jpg
  • QQ图片20170501191841.png
  • QQ图片20170501193650.png

回复评论 (7)

类型说的很清楚呀,第一个结构体定义了GPIO口初始化类型,包括管脚,速度,和模式;
第二个结构体则是速度的具体定义;按照定义,应该还有第三个结构体,是模式的具体定义。
点赞  2017-5-1 19:34
引用: 低调的路人 发表于 2017-5-1 19:34
类型说的很清楚呀,第一个结构体定义了GPIO口初始化类型,包括管脚,速度,和模式;
第二个结构体则是速度 ...

第三张图片我补上了,那您的意思是说snum是指速度模式的么?
点赞  2017-5-1 19:38
引用: 胡豆豆的春天 发表于 2017-5-1 19:38
第三张图片我补上了,那您的意思是说snum是指速度模式的么?

where is  “snum”?
点赞  2017-5-1 19:45
非专业回复,随口说的。供参考。 结构体与枚举当然是有区别的,结构体表示的,是用一个结构体代表结构体的内容,比如第一个图,结构体就只用一个结构体表示了多个参数,每初始一个同型的结构体就生成了同样的小包裹,里面含有这个几个参数,正如定认一辆车,每辆车都会相同的具有4个轮子……等。而枚举不同,枚举只是用于代替,只是为了方便使用,方便用于表示几个固定的可能。就像图3中,模式只有这么多种可能,为了可读性与编程的方便,直接用一个枚举代替,初始一个枚举变量,最终的结果也只会枚举内容里面的一项,正如枚举,你的女朋友,从小学到现在共十位,用你的女朋友表示这十位姑娘,但枚举初始化后每次只会是其中一位。 本帖最后由 strong161 于 2017-5-1 21:31 编辑
点赞  2017-5-1 21:22
引用: 低调的路人 发表于 2017-5-1 19:45
where is  “snum”?

enum,我打错了
点赞  2017-5-2 13:59

主要看 括号后面的,例如第一个名字是  是GPIO_InitTypeDef (关于引脚),在后面的程序中会用这个名字;
第二个名字是 GPIOSpeed_TypeDef  (关于速度) 以此类推,第三个是关于模式。而你的疑问是enum是不是名字,这么解释吧,enum是一个定义了很多参数的结构体,如果都用这个表示程序可读性很差,所以把相关的参数放一起重新定义个名字,这样程序读起来就比较明确。 不知道我说明白了没~
点赞  2017-5-2 14:23
一个是结构体,一个是枚举,结构体占用的存储空间是里面各成员占用空间的总和,枚举只占用一个整形变量的存储空间
点赞  2017-5-4 09:09
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复