包含路徑
標頭分為四種類別:系統、全域、程式庫和實作。
系統標頭
#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