在delphi中使用inline关键字是什么

时间:2009-07-22 12:24:04

标签: delphi

任何人都可以说明在delphi中使用内联关键字是什么

5 个答案:

答案 0 :(得分:21)

这是一个提示编译器函数/过程应该(如果可能)内联,即当你调用它时,它应该像宏一样扩展而不是被调用。

这是(非常)小功能的优化,其中呼叫的开销很大。您将在例如windows.pas

中找到许多示例

实际发生的事情取决于函数的复杂性,公共/私有访问和Delphi版本。

答案 1 :(得分:11)

它告诉编译器在调用它的地方为 inline; 例程生成代码,而不是跳转到例程并返回。

对于转换为非常短的汇编程序的程序,这可以对性能有益,因为与参数准备,实际调用和程序序言/结尾相比,实际代码相对较短。

如果程序太长,可能会对性能造成制动,并且会大量炸毁你的代码。

答案 2 :(得分:11)

其他人已经回答了内联的内容,但我只想指出有一个编译器选项来设置内联开,关或自动。查看D2009文档中的“调用过程和函数”,以获得对内联函数的非常好的解释。这是在线文档的链接:

Delphi Online Docs for inline

答案 3 :(得分:2)

它是从C借用的,它告诉编译器这是一个经常调用的短例程,它建议编译器将函数视为宏,并将函数代码直接集成到调用点的程序中,而不是使用函数调用。

这提供了更快的代码,因为没有函数调用开销,但代价是更大的程序。另请注意,在C中,这是对编译器的建议,它实际上不必这样做,优化器可能会覆盖您。

在哪里这样做?就像循环展开一样,这是一种现在很少使用的技术。使用它的经典之处在于嵌套结构,这是一个实时关键的结构,例如在图形应用程序中渲染代码,其中每次迭代时削减一些机器调用可以提高屏幕刷新率。

答案 4 :(得分:0)

在调用您的内联函数之前,在Delphi中调试时按Ctrl + Alt + C(整个CPU调试窗口)。你会看到内联函数在没有" call"我跳到另一个地址。它的优化功能。