繁体   English   中英

C和/或Objective-C中的组头文件

[英]Group header files in C and/or Objective-C

有时我纯粹是使用头文件来导入一组相关的头文件,这些头文件描述了模块所有公共组件上的接口。 这样做是为了方便。 使用该模块的任何人都只需导入一个头文件。

是否推荐这种做法?如果这样,该做法是否有名称? 我正在尝试将头文件命名为明确表明它们是组导入的名称,并且想知道是否存在任何约定?

所有可可框架都这样做:例如AppKit.framework包含一个标题名称“ AppKit.h”,这样就可以使用#import <AppKit/AppKit.h>包含所有AppKit。 它仅包含〜180个标头导入语句的列表。

我没有这个模式的名称,但是我也在自己的库(静态库或框架库)中使用它。

在Objective-C的情况下,使用#import指令会更好一些,但是,在C / C ++中,这将是一件非常糟糕的事情,因为对这些标头中描述的任何接口进行的任何更改都会触发不可避免地重建所有.c / .cpp文件,包括您使用的文件。
如果您某个时候发现诸如TDD之类的东西,或者至少只是发现单元测试之类的东西,则必须与此类标头引入的可能非常复杂的依赖项作斗争。
我个人建议避免使用此类解决方案,除非您知道自己在做什么。

没关系,但有一个警告:请尽量不要包含不需要的头文件。

如果包含的标头较少,则对标头的依赖性较小,因此模块之间的依赖性也较小,如果标头发生更改,则需要重新编译的文件也较少。

对于嵌入式系统,C语言中的一种常见模式是拥有一个标头(由处理器制造商提供),该标头包括所有单独的标头,这些标头定义了处理器外围设备的寄存器,每个源文件中都包含一个标头。 除此之外,源文件仅包含它们实际需要的头。

(在上文中,“标头”是指扩展名为.h的标头文件,“包含”是指#include预处理程序指令)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM