You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell中使用CPP扩展判断macOS编译环境的预处理器宏查询

在Haskell中使用CPP扩展检测macOS编译环境

在Haskell通过{-# LANGUAGE CPP #-}启用预处理器扩展时,有两种可靠的预定义宏可以用来检查当前是否为macOS编译环境:

  • darwin_HOST_OS:这是GHC针对操作系统平台定义的标准宏之一,macOS基于Darwin内核,编译时会自动定义该宏,是检测macOS最直接的方式。
  • __APPLE__:这个宏同样会被GHC在macOS环境下定义,如果你之前尝试没生效,大概率是代码写法问题——要确保{-# LANGUAGE CPP #-}放在Haskell文件的最开头,且预处理器指令的语法正确(比如#ifdef/#elif/#endif的格式)。

以下是示例代码:

{-# LANGUAGE CPP #-}

module Main where

main :: IO ()
main = do
#ifdef darwin_HOST_OS
  putStrLn "当前编译环境是macOS"
#elif defined(__APPLE__)
  putStrLn "当前编译环境是Apple平台"
#else
  putStrLn "当前编译环境不是macOS"
#endif

如果不确定当前环境的预定义宏,可以通过GHC命令直接查看:

ghc -E -dppr-debug YourModule.hs

执行后会输出当前编译环境下所有预定义的CPP宏,方便你确认目标宏是否存在。

内容的提问来源于stack exchange,提问作者yairchu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:53:13