跳到内容

条件编译

概述

WebKit 中的每个翻译单元都以包含“config.h”开头。此文件定义了一组C++ 预处理器宏,用于根据目标操作系统、平台以及给定功能是否启用或禁用代码。

例如,以下 #if 条件表示其中的代码仅在 SERVICE_WORKER 功能启用时才会被编译

#if ENABLE(SERVICE_WORKER)
...
#endif

类似地,以下 #if 条件将仅在 macOS 上启用其间的代码

#if PLATFORM(MAC)
...
#endif

对于应在 iOS、watchOS、tvOS 和 Mac Catalyst 中启用的代码,我们使用 PLATFORM(IOS_FAMILY)。对于 iOS 系列的每个特定变体,我们还有 PLATFORM(IOS)PLATFORM(WATCHOS)PLATFORM(APPLETV)PLATFORM(MACCATALYST)

以下 #if 条件将仅在使用 CoreGraphics 时启用其间的代码

#if USE(CG)
...
#endif

最后,如果某段代码仅应在比某个版本新的操作系统中启用,我们使用 __IPHONE_OS_VERSION_MIN_REQUIRED__MAC_OS_X_VERSION_MIN_REQUIRED。例如,以下 #if 仅在 macOS 10.14(macOS Mojave)或更高版本中启用其间的代码

#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
...
#endif