c - Delphi 记录和 C 结构

标签 c delphi struct record

任务:

用 Delphi 编写的应用程序接受一个包含三个字段的结构(record,就 Delphi 而言)。我可以使用 SendMessage (Win32 API) 函数发送这个结构的指针。

那么一个问题是:

Delphi如何在内存中为Delphi维护一定的结构表示?

它有类型

PWPModPostData = ^ TWPModPostData;
TWPModPostData = record
   DataType: Integer;
   Data: PChar;
   Next: PWPModPostData;
end;

如何在C中定义它?我的意思是,Delphi 结构中是否有任何隐藏字段或服务字段?

最佳答案

不,没有隐藏字段,Delphi 记录和 C 结构可以 1:1 相互映射,但有几点需要注意:

  • 不要使用任何 C 不支持的数据类型 理解。这包括对象, 动态数组和 Delphi 字符串。

  • C 和 Delphi 有时有不同 关于如何字节对齐字段的想法。 测试您的记录并验证 他们在 C 端工作。如果他们 不要,尝试使用打包记录 而不是记录

  • 传递指向记录的指针时 从 C 到 Delphi,反之亦然,使 确保接收它的一方 不尝试释放或重新分配 内存。它属于内存 创建它的经理。

关于c - Delphi 记录和 C 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1857288/

相关文章:

delphi - 如何更改默认的delphi停靠窗体标题高度?

delphi - 使用某些 RTL/VCL 或 Delphi 语言元素时如何生成警告

objective-c - 替代结构中的 Objective-C 对象 (ARC)

c - 将结构成员值存储在具有较短名称的本地 var 中是不好的做法吗?

c - 程序仅在声明虚拟字符数组时有效 [C]

c - C中的面向对象

c - 使用冒泡排序对字符串数组进行排序

MySQL 用户定义函数发送 windows 消息

c - 使用结构指针和数组编写以下函数的代码

C:对无法放入数组的长列表进行排序