在头文件中包含标题?
我自己制作了几个库(几何库,链表库等)。 我想制作一个头文件,将它们全部包含在一个lib.h中。 我可以这样做:
#ifndef LIB_H_ #define LIB_H_ #include #include #include #include .... #endif
然后我可以引用这个库并实际引用多个库。 这可能吗? 如果没有,是否有办法绕过它?
是的,这会奏效。
但请注意,如果在此文件中包含大量标题,并且不需要在每个源文件中都使用所有标题,则可能会增加编译时间。
它还使得更难以弄清楚特定源文件实际依赖于哪些头文件,这可能使代码理解和调试更加困难。
是的,这有效,并且实际上在大多数API中使用。 记住#include
实际上做了什么(告诉预处理器立即包含一个新文件),这应该是有意义的。 尽管实现具有(大)最大深度,但没有什么可以阻止包含的几个级别。
如上所述,您应该将标头组织成逻辑分组。
包含的“正确方式” (在A中)
- 如果:
A
根本不对B
做任何引用 - 如果:
B
的唯一引用是在朋友声明中 - 转发声明
B
如果:A
包含B
指针或引用:B* myb
; - forward if语句如果:一个或多个函数有一个
B
对象/指针/引用作为参数,或作为返回类型:B MyFunction(B myb);
-
#include "bh"
if:B是A的父类 -
#include "bh"
if:A包含B对象:B myb;
从cplusplus.com文章中你应该明确地阅读