Boost C++ 函式庫

...全世界最受推崇且設計精良的 C++ 函式庫專案之一。 Herb SutterAndrei Alexandrescu,《C++ 程式碼規範

Boost 標頭檔政策

標頭檔是函式庫與使用者程式碼和其他函式庫接觸的地方。為了和平共處並有效率地運作,標頭檔必須是「好鄰居」。

以下是 boost 標頭檔的標準。其中許多也是一般用途的合理準則。

  • 標頭檔名應使用 .hpp(小寫)副檔名。
  • 除非有意進行多次引入,否則請將標頭檔包在 #ifndef 保護區塊中。使用一種命名慣例,盡量減少與其他程式碼中的巨集名稱衝突的可能性。範例標頭檔使用 Boost 慣例,即所有字母大寫,標頭檔名稱以命名空間名稱為前綴,以 HPP 為後綴,並以底線分隔。
  • 將標頭檔內容包在命名空間中,以防止污染全域命名空間。使用命名空間的方法來控制污染比舊方法(例如在全域名稱前加上奇怪的前綴)更受歡迎。設計用於與其他 Boost 函式庫良好搭配的函式庫應放置在命名空間boost.
  • 確保僅包含標頭檔內容的編譯單元可以成功編譯。
  • 將標頭檔放在子目錄中,以防止與其他函式庫中名稱相同的標頭檔衝突。父目錄會被添加到編譯器的 include 搜尋路徑中。然後,您的程式碼和使用者程式碼都會在#include指令中指定子目錄。因此,範例標頭檔將通過#include <boost/furball.hpp>引入。(請注意,不建議使用#include "furball.hpp"語法從當前檔案目錄引入。)
  • 類別定義的首選順序是 public 成員、protected 成員,最後是 private 成員。
  • 如果需要處理編譯器或平台設定問題,請引入 boost/config.hpp 設定標頭檔

範例標頭檔

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

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

//  See https://boost.dev.org.tw/ 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 標頭檔政策的一部分。