C++库设计之头文件目录结构

论坛 期权论坛 期权     
CppBlock   2019-6-30 05:29   3221   0
从一个简单的开源库开始了解下设计C++库时头文件的目录结构,之所以讨论这个问题是想把代码在设计之初就能够有清晰的目录结构,另一个方面能够便于用户的调用,而不需要对我们所设计的库添加各种头文件的引用。
stxxl也许大多数熟悉C++编程的人并不熟悉,但是标准库STL确是大多数C++开发者熟知的,尤其是对于标准库中的std::vector,因为它实在是太好用了。但是这么好用的东西也是有它自身的限制的,这是因为标准库只能操作内存中的数据,想象一种情形,你想要使用std::vector,但是又不在内存上操作数据,这时stxxl::vector可以帮助到你。
先来看看stxxl  include目录下的结构吧,下面是一张截图


在include目录下只有一个头文件,这里面包含了如下的内容

  1. #ifndef STXXL_MAIN_HEADER
复制代码
  1. #define STXXL_MAIN_HEADER
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #if ! defined(__GNUG__) || ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= 30400)
复制代码
  1. // map does not work with g++ 3.3
复制代码
  1. #include
复制代码
  1. #endif
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #include
复制代码
  1. #endif // STXXL_MAIN_HEADER
复制代码
值得注意的是,stxxl目录下面io, stream, timer, stack, map之类的都是文件名而不是文件夹,它们是没有后缀的,其实标准库中也是这么去做的,比如常用的
  1. #include
复制代码
这里iostream也不是文件夹而是文件名,打开这样的文件,里面的内容通常只有一句代码
  1. #include
复制代码
在stxxl目录下的这些文件是进一步对stxxl/bits目录下头文件引用的进一步整理

这样的安排对于用户使用时,只需要包含最外层的stxxl.h文件就可以使用stxxl库的所有功能,如果仅是使用stxxl::vector,则需要包含
  1. #include
复制代码
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP