我总是组织我的C源的方法是将结构,宏和函数原型放在头文件和.c文件中的函数实现中.但是,我最近一直在阅读大量项目的其他人的代码,我开始看到人们经常在C源本身中定义诸如结构和宏之类的东西,紧接在使用它的函数之上.我可以看到一些好处,因为你不必去寻找特定函数使用的结构和宏的定义,一切都在与使用它的函数大致相同的地方.但是我也可以看到它的一些缺点,因为它意味着没有一个用于结构/宏定义的中央存储库,因为它们分散在源代码中.
我的问题是,决定何时将宏/结构定义放在C源代码中而不是头文件本身有什么好的经验法则?
Joh*_*eek 29
通常,放在头文件中的所有内容都是接口的一部分,而放在源文件中的所有内容都是实现的一部分.
也就是说,如果头文件中的某些内容仅被关联的源文件使用,则它是移动到该源文件的绝佳选择.这样可以防止"污染"每个使用标头的文件的名称空间以及它们从未打算使用的宏和类型.
将您的公共结构和接口放入.h文件中.
将您的私有位放入.c文件中.
如果我有多个实现逻辑功能集的.c文件,我会将需要在这些实现文件中共享的内容放入*p.h文件中('p'代表私有).客户端代码不应包含*ph标头.
例如,如果我有一组实现XML解析器的例程,我可能有以下组织:
xmlparser.h - the public structures, types, enums, and function prototypes
xmlparserp.h - private types, function prototypes, etc. that client code
doesn't and shouldn't need
xmlparser.c - implementation of the XML parser
xmlutil.c - some other implementation bits (would include xmlparserp.h)
Run Code Online (Sandbox Code Playgroud)
很多人不知道这个基本的东西BTW,这是在任何大小的C项目上保持理智所必需的.
| 归档时间: |
|
| 查看次数: |
9540 次 |
| 最近记录: |