OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3464|回复: 19

代码分析思路请教

[复制链接]

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2018-6-19 10:19:29 | 显示全部楼层 |阅读模式
1金钱
1.遇到一个比较难看懂的代码,函数头缺少说明,参数还使用了大量结构体,代码语句缺少注释,还有标志位也缺少注释。请问有经验的各位前辈怎样快速阅读这类型的代码这些代码我看着好头疼~~


2.png

最佳答案

查看完整内容[请看2#楼]

这种函数在STM的固件库里非常多,尤其是HAL库将大量使用(当然啦,我自己有时候也这么学着这么写) 遇到这种大量使用结构体,先不要看函数,首先去查找结构体。搞清楚结构体成员变量,成员变量中可能还有结构体还会有指针等,先找到这些变量的含义后然后看函数本身。 这种函数切记急躁,可以用纸写下来成员之间的关系,方便理解。 另外,工作中的工程师,一般这些函数的编写不会有文档说明哒,得自己慢慢看懂。(我记得外国的一 ...
没有脑袋
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2018-4-4
在线时间
21 小时
发表于 2018-6-19 10:19:30 | 显示全部楼层
这种函数在STM的固件库里非常多,尤其是HAL库将大量使用(当然啦,我自己有时候也这么学着这么写)
遇到这种大量使用结构体,先不要看函数,首先去查找结构体。搞清楚结构体成员变量,成员变量中可能还有结构体还会有指针等,先找到这些变量的含义后然后看函数本身。
这种函数切记急躁,可以用纸写下来成员之间的关系,方便理解。
另外,工作中的工程师,一般这些函数的编写不会有文档说明哒,得自己慢慢看懂。(我记得外国的一本C语言的著作中写到,最难得就是看别人的代码,看懂他们的思路)加油吧
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-6-19 14:00:00 | 显示全部楼层
这个根据函数名就能看出来函数的功能吧
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-19 17:11:10 | 显示全部楼层
HXYDJ 发表于 2018-6-19 14:00
这个根据函数名就能看出来函数的功能吧

可能我还不习惯整篇都是采用结构体指来指去吧
没有脑袋
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4889
金钱
4889
注册时间
2017-7-6
在线时间
719 小时
发表于 2018-6-19 17:38:10 | 显示全部楼层
可以根据仿真调试,来理解
我是小白,很白很白的小白!!!
回复

使用道具 举报

31

主题

1954

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4510
金钱
4510
注册时间
2018-5-11
在线时间
944 小时
发表于 2018-6-19 19:12:18 | 显示全部楼层
本帖最后由 warship 于 2018-6-19 20:44 编辑
美丽的时光机器 发表于 2018-6-19 17:11
可能我还不习惯整篇都是采用结构体指来指去吧

结构体的指针相当于一个小点,
访问成员而已其实这个代码编得还是不错的说,
一看就是C++编程的老手,
变量命名比较规范,
可读性还是强的.
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-5-28
在线时间
9 小时
发表于 2018-6-20 00:58:30 | 显示全部楼层
这种应该是预先准备的SDK中的API,需要提前看懂其功能,用到时直接调用。
感觉需要多学习C++代码,量大了之后,应该就不怕这种函数了。
我准备自学C++,做一些小程序,依此来提高C语言水平。
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-20 08:33:50 | 显示全部楼层
sz189981 发表于 2018-6-20 00:58
这种应该是预先准备的SDK中的API,需要提前看懂其功能,用到时直接调用。
感觉需要多学习C++代码,量大了 ...

也难怪我菜鸟看不懂了
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-20 08:34:45 | 显示全部楼层
warship 发表于 2018-6-19 19:12
结构体的指针相当于一个小点,
访问成员而已其实这个代码编得还是不错的说,
一看就是C++编程的老手,

我经验差了些
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-20 08:34:57 | 显示全部楼层
程功之道 发表于 2018-6-19 17:38
可以根据仿真调试,来理解

可以试试
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-20 08:35:32 | 显示全部楼层
HXYDJ 发表于 2018-6-19 14:00
这个根据函数名就能看出来函数的功能吧

是啊   就是还不习惯结构体和指针指来指去  然后结构体也没有注释
没有脑袋
回复

使用道具 举报

8

主题

206

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-4-6
在线时间
234 小时
发表于 2018-6-20 08:47:10 | 显示全部楼层
其实,敲代码也是靠功能需求敲出来的,不管编程者的水平怎么样,只要先了解功能需求就知道函数是干嘛用的了。
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-20 09:17:10 | 显示全部楼层
xiedonghui258 发表于 2018-6-20 08:47
其实,敲代码也是靠功能需求敲出来的,不管编程者的水平怎么样,只要先了解功能需求就知道函数是干嘛用的了 ...

我现在看的代码或者修改的,维护的代码,没有一份是有功能需求文档的。。。连个说明文档都没有,串口通信这些命令含义也是没有说明。。。
没有脑袋
回复

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2018-4-4
在线时间
21 小时
发表于 2018-6-20 09:58:01 | 显示全部楼层
其实无论是什么样的结构体,他们的本质大多还是变量,只不过,我们喜欢把他们做出结构体,这样更简洁,你把那些结构体当成变量看就好啦。
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-20 11:01:37 | 显示全部楼层
xiaoff 发表于 2018-6-20 09:58
其实无论是什么样的结构体,他们的本质大多还是变量,只不过,我们喜欢把他们做出结构体,这样更简洁,你把 ...

可能我比较难接受别人写的代码吧,因为总感觉别人写的代码思维是别人的。
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-20 11:04:30 | 显示全部楼层
xiaoff 发表于 2018-6-20 09:53
这种函数在STM的固件库里非常多,尤其是HAL库将大量使用(当然啦,我自己有时候也这么学着这么写)
遇到这 ...

是啊  因为别人写的东西,结构,逻辑都是在他脑子里了,特别是一个人实现一个大工程时候。这个时候我去看他的代码就有些困难了,逻辑还有框架上的困难,因为现在都没有一份说明文档。功能需求文档都没有
没有脑袋
回复

使用道具 举报

12

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2660
金钱
2660
注册时间
2017-9-8
在线时间
465 小时
发表于 2018-6-20 11:10:10 | 显示全部楼层
慢慢啃吧,看别人代码就是这样的
回复

使用道具 举报

1

主题

31

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1140
金钱
1140
注册时间
2017-9-5
在线时间
161 小时
发表于 2018-6-20 11:16:26 | 显示全部楼层
无论是代码的书写规范,命名规范还是整体变量结构体的封装都是非常优美的。
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-20 11:26:39 | 显示全部楼层
jian0052 发表于 2018-6-20 11:10
慢慢啃吧,看别人代码就是这样的

调试维护别人的代码,逻辑尽量不要去改动,对吗?我们要做的只是根据结果进行一些数值的调整,一般调试维护是不是这样的?
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2018-6-20 12:31:02 | 显示全部楼层
HZT 发表于 2018-6-20 11:16
无论是代码的书写规范,命名规范还是整体变量结构体的封装都是非常优美的。

厉害 厉害!
没有脑袋
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 00:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表