Delphi inline编译器优化问题

简介: function Test():Integer; inline; var P:Pointer; begin FreeMem(P); Result := AtomicIncrement(__gr); // __gr是全局变量 ShowMessage('abc'); end; procedure TForm1.

 

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


目录
相关文章
|
NoSQL 安全 Linux
C++ | 对比inline内联函数和宏的不同点-1
C++ | 对比inline内联函数和宏的不同点
99 1
|
8月前
|
编译器 C++
在C++语言中内联函数
在C++语言中内联函数
31 0
|
8月前
|
安全 编译器 C语言
一文讲清楚内联函数 inline
在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。 为了解决这个问题,特别的引入了inline修饰符,表示为内联函数。
|
8月前
|
安全 编译器 数据库
C++特性——inline内联函数
C++特性——inline内联函数
|
编译器 Android开发 C语言
C++ | 对比inline内联函数和宏的不同点-2
C++ | 对比inline内联函数和宏的不同点
88 1
|
编译器 数据库 C++
|
安全 编译器 C语言
【C++】初阶 --- 内联函数(inline)
【C++】初阶 --- 内联函数(inline)
89 0
|
编译器 C++
【C++知识点】内联函数inline
【C++知识点】内联函数inline
80 0
|
编译器 数据库 C语言
C++入门——内联函数的介绍
今天小编给大家带来的是内联函数的介绍,大家可能之前没有听过内联函数这个名词,那么今天就和小编一起认识一下这个朋友吧。
123 0
|
编译器 C语言 C++
【C++入门】内联函数
【C++入门】内联函数
170 0