先来看看效果
虽然老师的一堂课只用了一个小时就完成了计算器程序, 对于萌新而言真正自己去实现其实还是挺费劲的
除了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. 多敲代码, 你懂了但并不一定能敲出来 这是两码事