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

Delphi中一个和多个“类型”块之间的区别

发布时间:2020-12-15 04:32:07 所属栏目:大数据 来源:网络整理
导读:我一直在为Delphi编程五六年,我认为自己相当擅长,但我最近偶然发现了一个我无法解释的行为.我正在编写一个简单的链表,我们称之为TIntegerList.下面的示例代码正确编译: type PIntegerValue = ^TIntegerValue; TIntegerValue = record Value: Integer; Next:
我一直在为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;

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

它没有特别的原因必须这样.编译器完全可以放宽该限制.人们只能假设很可能源于很久以前的编译器实现细节已经渗透到语言规范中.

(编辑:李大同)

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

    推荐文章
      热点阅读