gpt4 book ai didi

delphi - 我们可以在Delphi中实现ANSI C的 `offsetof`吗?

转载 作者:行者123 更新时间:2023-12-03 15:03:47 24 4
gpt4 key购买 nike

供引用:offsetof 宏(!) 采用 struct 数据类型和指定结构的成员作为参数,并返回给定成员相对值的整数偏移量到结构的开头。请参阅detailed overview and references .

通用offsetof背后的逻辑非常简单,可以在Delphi中轻松重现 (或多或少) (字面上很容易,消除了预先声明的指针类型要求使其成为基本的内联表达式,请参阅 David Heffernan 的 answercomment about swapping 引用和取消引用运算符)作为就地代码。但是,我认为绝对没有办法将就地代码解决方案转换为可重用函数。我们真的能做到吗?

最佳答案

如果没有预处理器或内置函数,就无法像 offsetof 宏那样干净利落地完成此操作。 offsetof 能够如此干净地完成此操作的方式是由预处理器完成这项工作。事实上,一些编译器将其实现为内置的,但这不是重点。 Delphi 没有预处理器,也没有内置的 offsetof

我所知道的最干净的解决方案是这样的:

NativeUInt(@TMyRecord(nil^).MyField)

但这并不像那么干净

offsetof(struct MyStruct, MyField)

关于delphi - 我们可以在Delphi中实现ANSI C的 `offsetof`吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18786986/

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