為 C/C++ 物件命名

包含路徑

標頭分為四種類別:系統、全域、程式庫和實作。

系統標頭

#include <zircon/foo/bar.h>
定義

這些標頭定義了核心與使用者空間之間的介面,也稱為 vDSO 介面。這些標頭定義系統呼叫,其中包括相關的類型和結構。這些標頭也會定義一些基本的 C 和 C++ 機器,例如以定義明確的序列當機。

附註
  • 系統標頭可能安裝在 zircon/ 底下,而不是 lib/zircon/
  • 系統呼叫包裝函式 (例如 zx) 不屬於系統標頭。這些是程式庫標頭 (詳見下文),依附於系統標頭。
  • 標準系統標頭 (例如來自 C 和 C++ 標準程式庫) 的標準路徑具有其標準路徑。
範例
  • #include <zircon/process.h>
  • #include <zircon/syscalls/hypervisor.h>
  • #include <stdint.h>
  • #include <algorithm>

全域標頭

#include <fuchsia/foo/bar.h>
定義

這些標頭定義了使用者空間元件之間的全系統合約。這些標頭是由這些合約的 FIDL 定義產生。

附註
  • 手寫程式碼應以程式庫標頭呈現,而非全域標頭。
範例
  • #include <fuchsia/sysmem/cpp/fidl.h>
  • #include <fidl/fuchsia.sysmem/cpp/wire.h>

程式庫標頭

#include <lib/foo/bar.h>
定義

程式庫標頭是應用程式使用的手寫程式碼,它們定義的介面是該應用程式的本機介面。部分程式庫是由 Fusia 專用,會在某些較低層級的系統設施周圍提供人體工學包裝函式。某些程式庫可能不會直接連結至 Fuchsia。

附註
  • 所有程式庫標頭都會在 lib/ 目錄中,以免與應用程式使用的其他標頭發生衝突。
  • 頁首不得直接置於 lib/ 下方。子目錄 (lib/foo/) 為必填欄位。
範例
  • #include <lib/fit/function.h>
  • #include <lib/sys/cpp/component_context.h>
  • #include <lib/zx/event.h>

實作標頭

#include "src/foo/bar.h"
定義

實作標頭是 Fuchsia 平台來源樹狀結構的內部。這些類型一律不會包含在 SDK 中,而且會由來源樹狀結構根目錄的絕對路徑參照。

產生實作標頭的工具會將這些標頭置於建構目錄的平行目錄結構中,而使用者會將其視為版本定義於建構中定義的目錄一樣。

附註
  • 納入實作標頭時,使用的是 ",而非 < 來表示路徑與來源樹狀結構的根層級相對。
範例
  • #include "src/ui/scenic/bin/app.h"
  • #include "src/lib/fxl/observer_list.h"

如果 fshost_config.h 是由 //src/storage/fshost/BUILD.gn 中的目標產生:

  • #include "src/storage/fshost/fshost_config.h