Подтвердить что ты не робот

Что такое ключевое слово inline в delphi

может кто-нибудь сказать, что такое использование встроенного ключевого слова в delphi

4b9b3361

Ответ 1

Это подсказка компилятору о том, что функция/процедура должна быть (если возможно) встроенной, т.е. когда вы ее вызываете, она должна быть расширена, как макрос, вместо вызова.

Это оптимизация для (очень) малых функций, где накладные расходы на вызов будут значительными. Вы найдете много примеров, например, для windows.pas

Что на самом деле происходит, зависит от сложности функции, открытого/закрытого доступа и версии Delphi.

Ответ 2

Он сообщает компилятору генерировать код для встроенного; рутина на том месте, где она называется, вместо того, чтобы прыгать к рутине и обратно.

Для процедур, которые переводят на очень короткий ассемблер, это может быть полезным для производительности, потому что фактический код относительно короткий по сравнению с подготовкой параметров, фактическим вызовом и прологом/эпилогом процедуры.

Если процедура слишком длинная, это может быть тормозом при работе, хотя и сильно взорвать ваш код.

Ответ 3

Другие ответили, что делает inline, но я просто хотел указать, что есть опция Compiler для установки встроенного, выключенного или автоматического. Ознакомьтесь с "Процедурами и функциями вызова" в документах D2009 для очень хорошего объяснения механики встроенного. Здесь ссылка на онлайн-документы:

Delphi Online Docs для встроенного

Ответ 4

Он заимствован из C в том смысле, что он сообщает компилятору, что это короткая подпрограмма, которая часто вызывается, и рекомендует компилятору рассматривать эту функцию как макрос и интегрирует код функции непосредственно в программу в указанной точке, а не используйте вызов функции.

Это дает более быстрый код, поскольку накладные расходы на функциональные вызовы отсутствуют, но за счет более крупной программы. Заметим также, что, как в C, это рекомендация для компилятора, на самом деле это не обязательно, и оптимизатор может переопределить вас.

Где это сделать? Ну, как петля, она разматывает эту технику, которая очень редко используется в наши дни. Классическое место для использования этого - глубокая вложенная структура, которая является критически важной в реальном времени, например, рендеринг кода в графическом приложении, где несколько машинных вызовов, сбритых на каждой итерации, могут увеличить частоту обновления экрана.

Ответ 5

Нажмите Ctrl + Alt + C (полное окно отладки CPU) во время отладки в Delphi, прежде чем вызывать свою встроенную функцию. И вы увидите, что встроенные функции запускаются без "вызова" и wo перехода на другой адрес. Это функция оптимизации.