在头文件中包含标题?

时间:2010-04-20 23:22:51

标签: c

我自己制作了几个库(几何库,链表库等)。我想制作一个头文件,将它们全部包含在一个lib.h中。我可以这样做:

#ifndef LIB_H_
#define LIB_H_

#include <stdio.h>
#include <stdlib.h>
#include <linkedlist.h>
#include <geometry.h>
....

#endif

然后我可以引用这个库并实际引用多个库。这可能吗?如果没有,有办法吗?

3 个答案:

答案 0 :(得分:17)

是的,这会有用。

但请注意,如果在此文件中包含大量标题,并且不需要在每个源文件中都使用所有标题,则可能会增加编译时间。

这也使得弄清楚特定源文件实际依赖的头文件变得更加困难,这可能会使代码理解和调试变得更加困难。

答案 1 :(得分:5)

是的,这有效,并且实际上在大多数API中使用。记住#include实际上做了什么(告诉预处理器立即包含一个新文件),这应该是有意义的。虽然实现具有(大)最大深度,但没有什么可以阻止包含的几个级别。

如上所述,您应该将标题组织成逻辑分组。

答案 2 :(得分:1)

&#34;正确的方式&#34;包括(在A中)

  • 如果不执行任何操作:A根本不对B
  • 提供任何引用
  • 如果:B的唯一引用是在朋友声明中
  • ,则不执行任何操作
  • 转发声明B如果:A包含B指针或引用:B* myb;
  • forward declare B if:一个或多个函数有B个对象/指针/引用作为参数,或作为返回类型:B MyFunction(B myb);
  • #include "b.h" if:B是A
  • 的父类
  • #include "b.h" if:A包含B对象:B myb;

cplusplus.com article你应该明确地阅读