首页 > 代码库 > Delphi inline编译器优化问题

Delphi inline编译器优化问题

 

function Test():Integer; inline;var  P:Pointer;begin  FreeMem(P);  Result := AtomicIncrement(__gr);  // __gr是全局变量  ShowMessage(‘abc‘);end;procedure TForm1.btn4Click(Sender: TObject);var  r:Integer;begin  ShowMessage(‘ab‘);  Test();end;

 

结论1:  

Result := AtomicIncrement(__gr);
这句不会被优化掉

 

 ===========================================================================================================================

 

function Test():Integer; inline;var  P:Pointer;begin  FreeMem(P);  Result := AtomicIncrement(__gr);   // __gr全局变量  ShowMessage(abc);end;procedure TForm1.btn4Click(Sender: TObject);var  r:Integer;begin  ShowMessage(ab);  r := Test();end;

 

结论2:

  

Result := AtomicIncrement(__gr);   // __gr全局变量
这句会被优化掉, 也就是__gr不会 +1

可以使用{$O+}避免优化掉重要代码

Delphi inline编译器优化问题