gpt4 book ai didi

haskell - 定义可存储实例时如何找到对齐值

转载 作者:行者123 更新时间:2023-12-04 06:25:22 25 4
gpt4 key购买 nike

如果我可以访问头文件中的 C 结构定义,但想手动定义我的可存储实例而不使用 hsc2hs 之类的东西,我如何找到对齐值?

错误的对齐值也会导致崩溃或仅影响性能吗?

最佳答案

编辑:抱歉,我误读了这个问题,并认为您是在询问使用 hsc2hs 执行此操作,而不是没有。不正确的对齐会导致不正确的数据并导致崩溃(考虑是否正在编码结构数组),因此您确实应该使用可移植的东西。

根据FFI cookbook , 你可以定义

#let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)

然后用作
instance Storable Struct where
alignment _ = #{alignment my_struct}
sizeOf _ = #{size my_struct}
alignment关键字应该在 ghc > 7.2.1 中可用,因此您不需要使用非常新的 ghc 自己定义它。

关于haskell - 定义可存储实例时如何找到对齐值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350706/

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