Boost C++ 库

...世界上最受推崇和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

Boost 头文件策略

头文件是库与用户代码和其他库交互的地方。为了和平且高效地共存,头文件必须是“好邻居”。

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

  • 头文件名应使用 .hpp (小写) 扩展名。
  • 除非有意进行多次包含,否则请将头文件包裹在 #ifndef 保护中。使用命名约定,以最大限度地减少与其他代码的宏名称冲突的可能性。示例头文件使用了 Boost 的约定,即所有大写字母,头文件名称以命名空间名称为前缀,并以 HPP 为后缀,以下划线分隔。
  • 将头文件内容包裹在命名空间中,以防止全局命名空间污染。与旧的方法(例如在全局名称中添加奇怪的前缀)相比,命名空间方法是首选的污染控制方法。旨在与其他 Boost 库良好协作的库应放置在命名空间中boost.
  • 确保仅包含头文件内容的翻译单元能够成功编译。
  • 将头文件放在子目录中,以防止与其他库中同名的头文件冲突。父目录被添加到编译器的包含搜索路径中。然后,您的代码和用户代码都在#include指令中指定子目录。因此,示例头文件将通过以下方式包含#include <boost/furball.hpp>. (注意,不鼓励使用以下语法从当前文件目录包含#include "furball.hpp"语法。)
  • 类定义的首选顺序是公共成员、受保护成员,最后是私有成员。
  • 如果需要处理编译器或平台配置问题,请包含 boost/config.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 头文件策略的一部分。