加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 09:42:44 所属栏目:大数据 来源:网络整理
导读:供参考:offsetof macro(!)将struct数据类型和指定struct的成员作为参数,并返回给定成员相对于struct开头的整数偏移量.见 detailed overview and references. 通用偏移量背后的逻辑非常简单,可以轻松地在Delphi中复制(或多或少)(字面上很容易,消除预先指定
供参考:offsetof macro(!)将struct数据类型和指定struct的成员作为参数,并返回给定成员相对于struct开头的整数偏移量.见 detailed overview and references.

通用偏移量背后的逻辑非常简单,可以轻松地在Delphi中复制(或多或少)(字面上很容易,消除预先指定的指针类型要求使其成为基本的内联表达式,请参阅David Heffernan的answer和comment about swapping参考和解引用运算符)作为就地代码.但是,我认为绝对没有办法将就地代码解决方案转换为可重用的功能.我们真的能这样做吗?

解决方法

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

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

NativeUInt(@TMyRecord(nil^).MyField)

但这就像干净一样

offsetof(struct MyStruct,MyField)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读