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