Boost C++ 库

...世界上最受尊敬和精心设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

Boost 头文件策略

头文件是库与用户代码和其他库接触的地方。为了和平共处并高效工作,头文件必须是“好邻居”。

以下是 Boost 头文件的标准。其中许多也是通用的合理准则。

  • 头文件的文件名应使用 .hpp(小写)扩展名。
  • 除非有意多次包含,否则将头文件包含在 #ifndef 保护宏中。使用一种命名约定,以最大程度地减少与其他代码中宏名称冲突的可能性。示例头文件 使用 Boost 约定,即所有字母大写,头文件名称以命名空间名称为前缀,以 HPP 为后缀,并用下划线分隔。
  • 将头文件内容包含在命名空间中,以防止全局命名空间污染。命名空间方法是控制污染的强力推荐方法,优于较旧的方法,例如向全局名称添加奇怪的前缀。设计为与其他 Boost 库良好协作的库应放置在命名空间boost.
  • 中。
  • 确保仅包含头文件内容的翻译单元能够成功编译。将头文件放在子目录中,以防止与其他库中同名头文件冲突。父目录将添加到编译器的包含搜索路径中。然后,您的代码和用户代码都在#include指令中指定子目录。因此,示例头文件 将通过#include <boost/furball.hpp>包含。(注意,不建议使用#include "furball.hpp"
  • 语法从当前文件目录包含。)
  • 类定义的首选顺序是公共成员、受保护成员,最后是私有成员。

示例头文件

//  Boost general library furball.hpp header file ---------------------------//

  < Copyright and license notice, as indicated in the license page >

//  See https://boost.ac.cn/ for latest version.

#ifndef BOOST_FURBALL_HPP
#define BOOST_FURBALL_HPP

namespace boost {

//  Furball class declaration  -----------------------------------------------//

  class furball
  {
    public: 
      void throw_up();
    private:
      int whatever;
  };  // furball

} // namespace

#endif  // include guard

编码风格

细心的读者会注意到,示例头文件 对缩进、大括号位置、注释结束大括号和类似的格式问题采用了一定的编码风格。这些风格问题被视为个人偏好,并非 Boost 头文件策略的一部分。