我正在将一些C头文件翻译成Delphi
在这些头文件中,两个文件彼此共享它们的结构
当我在Delphi中尝试这个时,它给了我循环引用错误
所以我目前正在单个.pas文件中编写两个标题的翻译
还有其他方法可以解决这个问题吗?
这是一个小例子 实际的头文件更复杂:\
== 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;
答案 0 :(得分:8)
正如Eugene所指出的,圆形接口单元引用在Delphi中是不可能的。有几种可能的解决方案:
implementation
部分(如果可能)。请注意,德尔福强迫您考虑循环引用这一事实并非蠢事。在许多情况下,这些循环引用会引起您注意设计中的缺陷。
答案 1 :(得分:2)
是的,你不能让单位在“界面”部分互相引用。将一个文件的“uses”子句移动到实现部分。这是pascal的限制。