关于在C中组织代码文件的最佳文章

时间:2009-01-28 19:28:09

标签: c code-organization

为了在C中制作组织良好的代码,您能为我推荐我应该阅读/学习的内容吗?

我想学习的一件事是在.h和.c文件中拆分项目的原则,在哪里和为什么,变量命名,何时使用全局变量...

我对处理此特定问题的书籍和文章感兴趣。

4 个答案:

答案 0 :(得分:13)

一本涵盖了很多内容(适用于C和C ++)的好书是Large Scale C++ Software Design, by John Lakos

另外,要记住一个好的经验法则是“永远不要做任何在头文件中分配内存的事情”

答案 1 :(得分:3)

关于文件布局,没有太多选择。

分区通常是以下之一(这里的包是单个库或二进制文件):

  1. ... /项目/.../包/模块。{C,H}
  2. ... / project /.../ {src,include} / package / module。{c,h} //非接口标头转到 src
  3. ... / project /.../ package / {src,include} / module。{c,h} //非接口标头转到 src
  4. 分区(1)很方便,因为属于特定包的所有文件都存储在一个目录中,因此可以轻松地移动包,但是使用这种方法将API标头从私有文件中删除并检测API更改并非易事。 (2)和(3)非常相似,它们使API发布和API变化检测变得微不足道,而(2)在你总是发布整个项目的情况下稍微容易一些,而(3)当你发布个别包时稍微好一些(例如用于修补目的)

    在任何C / C ++项目中,通常都有以下常见软件包:

    1. 常用宏和数据类型
    2. 记录包
    3. 应用程序引导程序包(如果有的话 项目中超过1个二进制文件。)

答案 2 :(得分:2)

特定于unix(而不是c,natch),但也是如此:

  

Recursive Make Considered Harmful

使用所描述的构建结构,您可以使用很多文件。因此,每个逻辑单元都会获得一个标头和一个源文件。

答案 3 :(得分:1)

我认为你将在这个主题上获得最好的教育阅读,就是阅读Linux内核源代码。它有一个很好的源布局,基本上是标准的大型C项目。 Here也是如何将源文件放在一起用于BSD源的指南。

说真的,只需要开始阅读内核源代码并了解所有内容是如何组合在一起的。显然,这是一个计划周密的项目。