我一直在Java/J2ee项目中工作,在这些项目中我遵循Maven结构。我想用C语言开发一个命令行解释器,比如linux {ubuntu}。我从来不用C语言开发项目。我想知道我应该遵循什么样的项目结构。
发布于 2010-04-09 13:29:26
在这方面,C项目没有一个“标准”。当然,如果你的项目很小,那么通常所有的东西都会放在一个单独的目录中。
您可以尝试下载一些流行的开源C项目并查看它们的代码。
在较低的级别上,代码应该是模块化的。每个模块(在C中通常表现在一个数据结构中,具有一组作用于它的函数)都有自己的一对.h和.c文件,其中.h文件是对模块的客户端可见的公共接口,而.c文件是私有实现。
发布于 2010-04-09 19:58:16
正如Eli Bendersky所说,这严格取决于你的项目有多复杂。
该标准建议尽可能多地拆分到库中。重点是,您可能希望在其他地方重用您的库。举个例子这是我的一个项目:
├── AUTHORS
├── COPYING
├── ChangeLog
├── Makefile.am
├── NEWS
├── README
├── configure.ac
├── libs
│ ├── featsel
│ │ ├── Makefile.am
│ │ ├── commander.c
│ │ ├── featsel
│ │ │ ├── commander.h
│ │ │ ├── feattuple.h
│ │ │ └── types.h
│ │ ├── featsel.h
│ │ ├── feattuple.c
│ │ ├── headers
│ │ │ └── datatypes.h
│ │ └── tests
│ │ ├── Makefile.am
│ │ └── test00.c
│ ├── mbox
│ │ ├── Makefile.am
│ │ ├── README
│ │ ├── control.c
│ │ ├── error.c
│ │ ├── headers
│ │ │ ├── datatypes.h
│ │ │ ├── mail.h
│ │ │ ├── parse.h
│ │ │ ├── split.h
│ │ │ └── strings.h
│ │ ├── interface.c
│ │ ├── mail.c
│ │ ├── mbox
│ │ │ ├── descriptor.h
│ │ │ ├── error.h
│ │ │ ├── mail.h
│ │ │ └── types.h
│ │ ├── mbox.h
│ │ ├── parse.c
│ │ ├── split.c
│ │ └── strings.c
│ └── thread_queue
│ ├── Makefile.am
│ ├── thrdqueue.c
│ └── thrdqueue.h
├── reconf
└── src
├── Makefile.am
└── main.c我个人更喜欢将所有的库放在一个libs目录中。除了微不足道的库之外,每个库都有自己的私有头目录,并通过具有与库相同名称的目录导出公共头。
程序本身的源文件放在src目录中。
发布于 2010-04-09 13:38:52
模块中的单独功能:具有实现细节/定义的.c文件与具有声明的.h文件配对。
尽量不要因为使用静态函数和通用模块前缀作为外部符号而污染命名空间。
如果您有可以封装和重用的功能,请创建库。
https://stackoverflow.com/questions/2605253
复制相似问题