包含路径
头文件分为四类:系统、全局、库和 实施。
系统标头
#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>
定义
库头文件是供应用使用的手写代码。通过 它们定义的接口是该应用的本地接口。有些库 特定于紫红色,并为一些较低级别的 系统设施。某些库可能没有直接关联到 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 中,并由 源代码树
用于生成实现标头的工具会将它们置于并行目录中 构建目录,然后用户就可以像添加 放在 build 中定义其世代的目录中。
备注
- 包含实现头文件使用
"
(而非<
)来指示 该路径相对于源代码树的根目录
示例
#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