gpt4 book ai didi

delphi - Delphi中一个和多个 "type" block 的区别

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

我已经编写 Delphi 程序五六年了,我认为自己相当擅长,但最近我偶然发现了一种我无法真正解释的行为。我正在编写一个简单的链表,我们将其称为 TIntegerList。下面的示例代码可以正确编译:

type
PIntegerValue = ^TIntegerValue;

TIntegerValue = record
Value: Integer;
Next: PIntegerValue;
Prev: PIntegerValue;
end;

但是,下面的代码没有(表示 TIntegerValue 未声明):

type
PIntegerValue = ^TIntegerValue;

type
TIntegerValue = record
Value: Integer;
Next: PIntegerValue;
Prev: PIntegerValue;
end;

Delphi 中“type”关键字到底是如何处理的?与每种类型只有一个“类型”相比,在一个“type”关键字下声明多种类型的语法含义是什么?好吧,这很令人困惑,但我希望代码示例有助于解释我的意思。我在 Delphi 2007 工作。

最佳答案

逻辑上,当代码已经是现有类型声明部分的一部分时,无需使用 type 关键字。所以,

type
TRec1 = record
end;

TRec2 = record
end;

生成与

无法区分的类型
type
TRec1 = record
end;

type
TRec2 = record
end;

但是,正如您所发现的,编译器有一个限制,要求在引入前向声明的部分结束之前完全解析所有前向声明。

没有什么特别的理由必须如此。编译器完全有可能放宽该限制。人们只能假设编译器实现细节(可能源自很久以前)已经泄漏到语言规范中。

关于delphi - Delphi中一个和多个 "type" block 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15336620/

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