萌新终于完成了人生中第一个c项目( ͡° ͜ʖ ͡°)✧

来源:15-8 计算器UI逻辑接入及案例最终完整实现

慕圣2430575

2021-05-29

先来看看效果

图片描述

虽然老师的一堂课只用了一个小时就完成了计算器程序, 对于萌新而言真正自己去实现其实还是挺费劲的

除了cMake文件和gtk.c照抄老师代码外其余都是自己实现, 此外我进行了一些优化

首先进行思路整理

老师的思路更类似于gtk的模式, 父套子 子套孙, 而我的更类似于依赖注入的模式

图片描述

优化点

1.首先对copy运算结构到上一次运算结构进行了优化, 变成了改变指针的方式, 这样相对于内存而言少了读取与复制, 只需要修改变量指针就能达到效果

老师代码
图片描述

我的代码
图片描述

2.对运算模块添加左右值标识用以实现我自己的单测, 先来看看我的测试文件, 是不是比老师的更清晰更加直观

图片描述

我遇到的一些问题和坑

1. css文件在设置background-color的时候先要重置background-image为none, 因为image的z-index比背景颜色优先级高所以挡住了
2. 代码编译链接运行都未报错的可能是ui文件导致的, 但是在glade可以正常打开, ID我也检查过是关联的, 替换成老师的ui就可以正常打开了

查看老师代码时的一些问题

1. https://git.imooc.com/coding-463/ProgramInC/src/master/Chapter15/gtk_ui.c 函数名没改还是console copy过来的代码
2. chapter15的代码不能直接跑, 因为ui_context多次定义, 建议改名或者注释运行

建议

1. 编译和链接报错就多看看cmake文件和头文件 根据报错信息去解决问题
2. 运行时报错就打断点一步步去debug
3. 不清楚api就去找官方文档
4. 多敲代码, 你懂了但并不一定能敲出来 这是两码事
写回答

3回答

bennyhuo

2021-06-02

不错,先鼓掌。

0
0

bennyhuo

2021-06-02

2. chapter15的代码不能直接跑, 因为ui_context多次定义, 建议改名或者注释运行

这个我本地能跑就没太注意,后面改下。

0
0

bennyhuo

2021-06-02

有优化意识特别好。再次鼓掌👏🏻

不过是不是优化其实还是很多细节的,比如

1. 你多了频繁的内存释放和开辟,如果内存开辟和释放很昂贵(实际上往往如此,但
当然也不排除例外,这取决于标准库的实现),就是负优化了。

2. 单测文本我的没有什么可读性,主要原因在于我需要关注每一个字符输入以后屏幕上显示的是否与预期一致,不知道你改良的版本是否能实现这一点呢?

0
5
慕圣2430575
回复
bennyhuo
( ͡° ͜ʖ ͡°)✧ 也是
2021-06-03
共5条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程