【发布时间】:2010-12-04 14:21:52
【问题描述】:
Delphi 编译器将如何编译以下代码;
uses a_big_unit;
procedure TForm1.Button1Click(Sender: TObject);
var
acompont : T_a_big_component ;
begin
if (true = false ) then // or if false then
begin
bc := Tbig_component.create(self)
end;
在此代码中,true = false 永远不会发生,因此组件 acompont 永远不会创建。
delphi 在优化模式下编译时会省略这些未使用的单元和代码
以及何时使用单位
在 delphi 7 中,即使你只是使用 XPMan 单元; (不使用它拥有的任何组件(TXPManifest1)),仍然使用该单元并且每个组件都以主题显示;
有些人说如果不需要,Delphi 会省略单位;
那么Delphi如何识别一个单元是否对其调用的单元有影响
【问题讨论】:
-
为什么不
if false then? -
@Andreas Rejbrand If false 表示如果 false = true ;我的意思是 true = false LOL!
-
检查一下怎么样?在 if 语句之前放一个断点(例如用
asm int 3;end;),运行它,然后检查 if 语句是否丢失? -
@Viveeshan 哈哈?
false=true、true=false和false是等价的 -
@CodeInChaos 这就是为什么我把 LOL 放在上一条评论的末尾(LOL = 大笑)
标签: delphi optimization compiler-construction code-generation