当前位置:  开发笔记 > 编程语言 > 正文

C通用编程

如何解决《C通用编程》经验,为你挑选了3个好方法。

首先,我是一名初学者程序员(还有很多需要学习的东西).在我的一个小型学校项目中,我为一个结构编写了一个堆栈.现在我有一个稍微不同的结构,我也需要一个堆栈.我应该编写另一个数据结构[stack](非常类似于初始的),或尝试实现一些通用编程......

你知道C中有什么好的通用编程策略(最终在线资源)吗?我使用谷歌,但我没有发现任何令人满意的,因为大多数结果都是关于C++策略.

谢谢!

后期编辑:经过一些阅读和体验,最终我找到了两个解决方案来解决我的问题.我在这里记录了它们:http://andreinc.net/2010/09/30/generic-data-structures-in-c/.那篇文章可能包含错误或不确定性,但它总结了迄今为止我所知道的内容.



1> Carsten Kuck..:

寻找共性和创建抽象是程序员最有价值的技能之一.在你还在学习的时候,我建议你做以下事情:

(1)为其他结构实现堆栈.是的,这是双重工作,但在你的阶段,每个工作计划都很重要.积累经验.

(2)比较程序.他们有什么共同点?有哪些不同之处?您的目标是将常见的部件与不同的部件分开.这两个小组用来沟通的手段是什么?它们共有的部分进入系统的一部分(stack.h/stack.c),不同的部分进入自己的文件(account.h/c,person.h/c等) .组合它们的部分应该包含stack.h和参数化实体.

(3)尝试找到您知道语言提供的所有可能方法,您可以使用它们来实现抽象结构功能.起初,似乎总是只有一种方式,但对于每一个非平凡的问题,都有几种方法.在堆栈的情况下,使用标准C,例如,你可以使用void指针,你可以使用预处理器宏,你应该看看标记粘贴,你可以使用函数指针加上struct指针等.

(4)尽可能多地实施.同样,这是为了学习体验.C有很多陷阱,越早遇到它们就越好.

(5)在您列举并实施了所有这些不同的方法之后,您应该对它们进行评估:哪一个最容易使用?哪一个最容易实现?哪一个最快?哪一个最容易调试?



2> Kevin Montro..:

我不做很多C黑客攻击,但我认为这样做的方法是void*.

所以,只需重写你的push/pop堆栈void*而不是some_struct*.保持类型正确成为你的问题,但这只是你使用这种低级*编程语言所付出的代价.

*并不意味着这是一件坏事.



3> epatel..:

我相信抽象主要是程序员的眼睛.一个优秀的程序员可以在简单的语句中看到模式,即使是在C语言的低级语言中.语言及其语法肯定会有所帮助,但语句和表达式的最终编写方式在某种程度上区别于优秀的程序员与不良程序员.那说,这对你有什么帮助?好吧,我的观点是熟悉C语言中的结构,这样当你看到它们时就会知道它们,而void*Kevin Montrose提到的是一个常见的结构.策略我觉得是很好的是了解stdlib,怎样的事情已经解决了吗?当你看到一些时,你会反思很棒的代码.即,共同图案stdlib是具有零(0)来表示行.或者对如何用好所有的FileDescriptor的作品反映read,write等功能,无论其来源(插座,文件,管道等).这个SO问题(链接)有一些很好的链接,可以阅读很棒的代码.

替代文字http://img.skitch.com/20090222-jd6pf1gcjx77bgdh16a5ceehyc.jpg

图片来自Thinking Forth,这是一本很棒的老编程书,不论语言如何.


我喜欢这个..!:)
它提醒了这个Java EE堆栈:http://ptrthomas.wordpress.com/2006/06/06/java-call-stack-from-http-upto-jdbc-as-a-picture/
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有