gpt4 book ai didi

c - '#type' 在 Haskell 外部函数接口(interface)中意味着什么?

转载 作者:太空狗 更新时间:2023-10-29 15:02:47 26 4
gpt4 key购买 nike

我在 Haskell sendfile 包中找到了这段代码:

http://patch-tag.com/r/mae/sendfile/snapshot/current/content/pretty/src/Network/Socket/SendFile/Linux.hsc

-- sendfile64 gives LFS support
foreign import ccall unsafe "sendfile64" c_sendfile
:: Fd -> Fd -> Ptr (#type off64_t) -> (#type size_t) -> IO (#type ssize_t)

1) #type 是什么意思和 2) 为什么会出现此错误,

[1 of 1] Compiling Linux.Splice     ( splice.hs, splice.o )

splice.hs:40:12: parse error on input `type'

当我自己尝试按如下方式使用它时?:

ghc --make splice.hs

拼接.hs:

{-# LANGUAGE ForeignFunctionInterface #-}

module Linux.Splice where

import Data.Word
import System.Posix.Types

-- SPLICE

-- fcntl.h
-- ssize_t splice(
-- int fd_in,
-- loff_t* off_in,
-- int fd_out,
-- loff_t* off_out,
-- size_t len,
-- unsigned int flags
-- );

foreign import ccall unsafe "fnctl.h splice" c_splice
:: Fd
-> Ptr (#type {- < parse error -} loff_t)
-> Fd
-> Ptr (#type loff_t)
-> (#type size_t)
-> Word
-> IO (#type ssize_t)

(使用 GHC 7.4.x)

最佳答案

正如 scdvvc 所指出的,这使用了 hsc2hs 定义的 C 预处理宏专门针对正在编译的系统自定义代码。您需要使用 hsc2hs 来为您的代码定义适当的宏。

关于c - '#type' 在 Haskell 外部函数接口(interface)中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076436/

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