C语言中用宏设计的“泛型”堆栈

2014-11-24 09:24:36 · 作者: · 浏览: 1

每次项目当要用到堆栈时要么会重新写个要么把以前的拷贝过来换个类型,一直在想能不能用C语言做个通用的数据结构库,像C++中的STL一样。要在C语言突破类型的限制以我目前的知识水平能想到的用宏了,后来查到了#define中##的用法。后来就产生了下面这段代码:



后来考虑到__p_start不能带;号与C语言语法有点冲突,改进如下:



用法如下:



每个堆栈的作用域在p_stack_start和p_end之间,目前这个还有个小bug就是关于p_top的返回如果是int型的,那么返回0就有可能和堆栈里面的数据值一样不能识别了。目前能想到的也只有此了,刚还做了个同样的队列,对于链表这个还没想好,而且也不太合适,主要是链表的代码更复杂直接用宏的话太牵强了,如果大家有更好的方法也可以共享一下。