首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中什么是好的项目结构?

在C中什么是好的项目结构?
EN

Stack Overflow用户
提问于 2010-04-09 13:27:43
回答 5查看 24.1K关注 0票数 24

我一直在Java/J2ee项目中工作,在这些项目中我遵循Maven结构。我想用C语言开发一个命令行解释器,比如linux {ubuntu}。我从来不用C语言开发项目。我想知道我应该遵循什么样的项目结构。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-09 13:29:26

在这方面,C项目没有一个“标准”。当然,如果你的项目很小,那么通常所有的东西都会放在一个单独的目录中。

您可以尝试下载一些流行的开源C项目并查看它们的代码。

在较低的级别上,代码应该是模块化的。每个模块(在C中通常表现在一个数据结构中,具有一组作用于它的函数)都有自己的一对.h和.c文件,其中.h文件是对模块的客户端可见的公共接口,而.c文件是私有实现。

票数 16
EN

Stack Overflow用户

发布于 2010-04-09 19:58:16

正如Eli Bendersky所说,这严格取决于你的项目有多复杂。

该标准建议尽可能多地拆分到库中。重点是,您可能希望在其他地方重用您的库。举个例子这是我的一个项目:

代码语言:javascript
复制
├── 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目录中。

票数 16
EN

Stack Overflow用户

发布于 2010-04-09 13:38:52

模块中的单独功能:具有实现细节/定义的.c文件与具有声明的.h文件配对。

尽量不要因为使用静态函数和通用模块前缀作为外部符号而污染命名空间。

如果您有可以封装和重用的功能,请创建库。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2605253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档