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


目录
相关文章
|
4月前
|
NoSQL 安全 Linux
C++ | 对比inline内联函数和宏的不同点-1
C++ | 对比inline内联函数和宏的不同点
36 1
|
23天前
|
存储 安全 编译器
【c++入门】引用,内联函数,auto
朋友们大家好,本节我们来到c++中一个重要的部分:引用
【c++入门】引用,内联函数,auto
|
1月前
ABAP 7.40 新语法介绍系列之一 - ABAP 变量内联声明(Inline Declaration)试读版
ABAP 7.40 新语法介绍系列之一 - ABAP 变量内联声明(Inline Declaration)试读版
26 0
|
3月前
|
安全 编译器 数据库
C++特性——inline内联函数
C++特性——inline内联函数
|
3月前
|
安全 编译器 C语言
一文讲清楚内联函数 inline
在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。 为了解决这个问题,特别的引入了inline修饰符,表示为内联函数。
|
4月前
|
编译器 Android开发 C语言
C++ | 对比inline内联函数和宏的不同点-2
C++ | 对比inline内联函数和宏的不同点
33 1
|
7月前
|
安全 编译器 C语言
【C++】初阶 --- 内联函数(inline)
【C++】初阶 --- 内联函数(inline)
46 0
|
10月前
|
编译器 C++
【C++知识点】内联函数inline
【C++知识点】内联函数inline
53 0
|
12月前
|
Java Kotlin
Kotlin内联函数inline、noinline、crossinline
如果一个函数接收另一个函数作为参数,或返回类型是一个函数类型,那么该函数被称为是高阶函数
130 0