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 头文件策略的一部分。