今天C语言老师布置了期末的大作业,要求实现一个毛语言。由于我进教室的时候迟到了,所以并不知道老师在此之前说了什么。不过看了一下屏幕上展示的PDF,只是要求实现最基本的变量声明和计算、输入输出的功能。不过我想着,既然做就做好点,把扩展的功能都给加上去。

思索一会后,我决定把项目中的一部分分离为infrastructure目录,包含一些常用的数据结构,比如链表、字符串、树,以后可能还有散列表。今晚上完毛概以后我就开始动手写,从链表开始(qlist)。虽然之前写过好几次,不过要用C一次写对不出bug还是一件不容易的事情。尤其是我还要在这个链表上模拟泛形。由于C语言没有像C++一样强大的模版,于是我只有用void*来表示数据,然后给链表的结构体里加上一个data_size的成员以表示数据的长度,再要求两个函数指针分别作为深拷贝和内存释放的方法。不过这样也是有问题的,那就是基本数据类型的开销太大了,操作起来也麻烦。比如我要给一个成员类型为int的链表插入,我还得专门定义一个变量,然后把它的地址传给拷贝函数。所以可以考虑一下用宏来解决这个事情。

话说回来,clion确实是个挺好用的IDE.