gpt4 book ai didi

haskell - 如何在 Haskell (ghc) 中编写与平台无关的代码

转载 作者:行者123 更新时间:2023-12-03 12:58:11 26 4
gpt4 key购买 nike

我想在 Hackage 中使用一些特定于平台的库(例如 inotify、kqueue)。但是,关于如何使用条件编译在平台之间切换的文档似乎有点稀少。我在查找相关文档时遇到了一些麻烦...

  • 我可以使用哪些预处理器定义在平台之间切换?
  • 如何设置我的 cabal 文件以分别在 linux/osx 上包含/排除 inotify/kqueue?

  • 我希望在这里记录它可能对其他人也有用,因此可能值得提及其他常见平台。到处寻找这些东西是愚蠢的。

    最佳答案

  • 看看os_HOST_OS与 C 预处理器选项结合使用的标志 -cpp (或使用 {-# LANGUAGE CPP #-} )如 GHC documentation 中所述
  • 添加 extensions: CPP到您的包裹描述,如Cabal documentation 中所示并定义一个这样的自定义标志:
    if os(linux)
    cpp-options: -DINOTIFY
    if os(darwin)
    cpp-options: -DKQUEUE

  • 然后您可以使用 #ifdef在你的来源。

    关于haskell - 如何在 Haskell (ghc) 中编写与平台无关的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799199/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com