为 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 目录中的并行目录结构中,并且用户可以将这些头文件包含在内,就像包含在 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