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

您能否推荐我应该阅读/学习什么才能在C中制作组织良好的代码?

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

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

John Lakos的大型C ++软件设计是一本很好的书,涵盖了很多(C和C ++)。

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

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

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

  1. … /项目/…/封装/模块。{C,H}
  2. … / project /…/ {src,include} / package / module。{c,h} //非接口头转到src
  3. … / project /…/ package / {src,include} / module。{c,h} //非接口头转到src

分区(1)很方便,因为属于特定包的所有文件都存储在一个目录中,因此可以轻松地移动包,但是使用这种方法将API标头与私有文件分离并检测API更改并非易事。 (2)和(3)非常相似,它们使API发布和API更改检测变得微不足道,而(2)在您总是发布整个项目的情况下稍微容易一些,而(3)在发布单个包时稍微好一点(例如用于修补目的)

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

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

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

递归使得被认为是有害的

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

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

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