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

delphi – 是否尝试编译此代码导致IDE终止或编译器无法运行的错

发布时间:2020-12-15 04:24:56 所属栏目:大数据 来源:网络整理
导读:注意在内联函数中使用退出命令!我一直在使用Delphi XE3. 症状 在某些情况下,当对包含退出命令的内联函数进行调用时,并且直接在WriteLn()中使用内联函数的返回值,编译器将报告错误消息, “dcc” exited with code 1. 甚至最糟糕的是,Delphi IDE终止而没有任
注意在内联函数中使用退出命令!我一直在使用Delphi XE3.

症状

在某些情况下,当对包含退出命令的内联函数进行调用时,并且直接在WriteLn()中使用内联函数的返回值,编译器将报告错误消息,

“dcc” exited with code 1.

甚至最糟糕的是,Delphi IDE终止而没有任何确认.

function ProcessNumber(const iNumber: Integer): Boolean; inline;
begin
  if iNumber = 0 then begin
    Result := False;
    Exit;
  end;
  // some code here ...
  Result := True;
end;

procedure Test;
begin
  writeln( ProcessNumber(0) );
end;

begin
  Test;
  ReadLn;
end.

但是,如果内联函数的返回值存储在变量中,然后该变量在WriteLn()中使用,则不会发生问题.

procedure Test;
var
  b: Boolean;
begin
  b := ProcessNumber(0);
  writeln(b);
end;

问题

这是编译器的错误吗?
>如果这是一个错误,是否有一个解决方案来安全退出内联函数?

解决方法

这当然是一个bug.它发生在我测试的所有IDE版本中,XE3,XE7和XE8.我真的不认为你可以做很多事情.对于我来说,IDE每次都会编译完毕.我想你只需要以不会导致IDE崩溃的方式编写代码.

您可以使用强制编译使用msbuild的IDE选项.这将编译成一个单独的过程,因此确保IDE不会崩溃.它不会帮助你,尽管因为你的IDE不会继续死亡,你仍然无法编译你的程序!

当您使用msbuild构建时,您会收到此表单的错误:

error F2084: Internal Error: GPFC00000FD-004D3F34-0

GPF代表通用保护错误,这是内存访问冲突.这可能是一个未处理的异常,在编译过程中会导致IDE死机.

我的建议是你向Quality Portal提交错误报告.这是修复缺陷的唯一方法.虽然不希望有一个修复程序来到XE3.

(编辑:李大同)

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

    推荐文章
      热点阅读