任何人都可以说明在delphi中使用内联关键字是什么
答案 0 :(得分:21)
这是一个提示编译器函数/过程应该(如果可能)内联,即当你调用它时,它应该像宏一样扩展而不是被调用。
这是(非常)小功能的优化,其中呼叫的开销很大。您将在例如windows.pas
中找到许多示例实际发生的事情取决于函数的复杂性,公共/私有访问和Delphi版本。
答案 1 :(得分:11)
它告诉编译器在调用它的地方为 inline; 例程生成代码,而不是跳转到例程并返回。
对于转换为非常短的汇编程序的程序,这可以对性能有益,因为与参数准备,实际调用和程序序言/结尾相比,实际代码相对较短。
如果程序太长,可能会对性能造成制动,并且会大量炸毁你的代码。
答案 2 :(得分:11)
其他人已经回答了内联的内容,但我只想指出有一个编译器选项来设置内联开,关或自动。查看D2009文档中的“调用过程和函数”,以获得对内联函数的非常好的解释。这是在线文档的链接:
答案 3 :(得分:2)
它是从C借用的,它告诉编译器这是一个经常调用的短例程,它建议编译器将函数视为宏,并将函数代码直接集成到调用点的程序中,而不是使用函数调用。
这提供了更快的代码,因为没有函数调用开销,但代价是更大的程序。另请注意,在C中,这是对编译器的建议,它实际上不必这样做,优化器可能会覆盖您。
在哪里这样做?就像循环展开一样,这是一种现在很少使用的技术。使用它的经典之处在于嵌套结构,这是一个实时关键的结构,例如在图形应用程序中渲染代码,其中每次迭代时削减一些机器调用可以提高屏幕刷新率。
答案 4 :(得分:0)
在调用您的内联函数之前,在Delphi中调试时按Ctrl + Alt + C(整个CPU调试窗口)。你会看到内联函数在没有" call"我跳到另一个地址。它的优化功能。