gpt4 book ai didi

c - delphi 中使用列表中的循环单元引用是否可行?

转载 作者:行者123 更新时间:2023-12-03 18:08:50 25 4
gpt4 key购买 nike


我正在将一些 C 头文件翻译成 Delphi。
在这些头文件中,两个文件相互共享它们的结构。
当我在 Delphi 中尝试这个时,它给了我循环引用错误。
所以我目前正在单个 .pas 文件中编写两个 header 的翻译。
有没有其他方法可以解决这个问题?

这是一个小例子。
实际的头文件更复杂:\

==File1.h==

struct a
{
int data;
}
int compare(struct a,struct b);

==File2.h==

struct b
{
int data;
}
int compare(struct A,struct b);

==File1.pas==

uses File2;
type
a = packed record
data: Integer;
end;

compare = function(d1: a; d2: b): Integer; cdecl;

==File2.pas==

uses File1;
type
b = packed record
data: Integer;
end;

compare = function(d1: a; d2: b): Integer; cdecl;

最佳答案

正如 Eugene 指出的那样,在 Delphi 中,循环接口(interface)单元引用是不可能的。有几种可能的解决方案:

  • 将共享结构移动到第三个单元,让其他两个单元包含这个单元。
  • 将其中一个单元引用移至实现部分(如果可能)。
  • 如您所说,将所有内容保存在一个文件中

请注意,恕我直言,Delphi 迫使您考虑循环引用这一事实并不是一件坏事。在许多情况下,这些循环引用会引起您对设计缺陷的注意。

关于c - delphi 中使用列表中的循环单元引用是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744079/

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