【发布时间】:2010-10-04 02:10:26
【问题描述】:
您能否推荐我应该阅读/学习什么才能在 C 中编写组织良好的代码?
我想学习的一件事是在.h和.c文件中拆分项目的原则,什么去哪里,为什么,变量命名,何时使用全局变量......
我对解决这个特定问题的书籍和文章感兴趣。
【问题讨论】:
标签: c code-organization
您能否推荐我应该阅读/学习什么才能在 C 中编写组织良好的代码?
我想学习的一件事是在.h和.c文件中拆分项目的原则,什么去哪里,为什么,变量命名,何时使用全局变量......
我对解决这个特定问题的书籍和文章感兴趣。
【问题讨论】:
标签: c code-organization
Large Scale C++ Software Design, by John Lakos 是一本涵盖很多内容的好书(适用于 C 和 C++):
另外,要记住的一个好的经验法则是“永远不要做任何在头文件中分配内存的事情”
【讨论】:
extern 的变量),但我真的不明白这是怎么回事,比如 malloc。
关于文件布局,没有太多选择。
分区通常是以下之一(这里的包是单个库或二进制文件):
分区 (1) 很方便,因为属于特定包的所有文件都存储在一个目录中,因此可以轻松地移动包,但是通过这种方法将 API 标头与私有标头分离并检测 API 更改并非易事. (2) 和 (3) 非常相似,它们使 API 发布和 API 更改检测变得微不足道,而 (2) 在您总是发布整个项目的情况下稍微容易一些, (3) 当您发布单个包时稍微好一些(例如用于修补目的)
在任何 C/C++ 项目中,通常都有以下常用包:
【讨论】:
特定于 unix(而不是 c, natch),但仍然如此:
通过描述的构建结构,您可以负担使用大量文件。所以每个逻辑单元都有一个头文件和一个源文件。
【讨论】:
我认为关于这个主题的最佳教育读物是阅读 Linux Kernel 源代码之类的东西。它有一个很好的源代码布局,基本上是标准的大型 C 项目。 Here 也是关于如何为 BSD 源代码组合源文件的指南。
说真的,刚开始阅读内核源代码并了解所有内容是如何组合在一起的。显然,这是一个精心策划的项目。
【讨论】: