为 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>
定义

库头文件是供应用使用的手写代码。通过 它们定义的接口是该应用的本地接口。有些库 特定于紫红色,并为一些较低级别的 系统设施。某些库可能没有直接关联到 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