Как уже упоминалось ранее, при любом обращении к оверлейной
процедуре или функции из другого модуля вы должны обеспечить для
всех активных процедур и функций вызовы типа FAR (дальний тип вы-
зова).
Это можно хорошо проиллюстрировать на следующем примере.
Предположим, что OvrA представляет собой процедуру в оверлейном
модуле, а процедуры MainC и MainD - процедуры в основной програм-
ме. Если основная программа вызывает MainC, которая вызывает про-
цедуру MainB, которая в свою очередь обращается к процедуре OvrA,
то во время обращения к процедуре OvrA процедуры MainC и MainB
являются активными (они еще не выполнили возврат управления), по-
этому необходимо использовать для них дальний тип вызова. Описан-
ные в основной программе, процедуры MainC и MainB в обычной ситу-
ации используют ближний тип вызовов (NEAR). С помощью директивы
компилятора {$F+} необходимо задать дальний тип вызовов.
Самый легкий способ удовлетворения требования использования
дальнего типа вызовов состоит в размещении в начале основной
программы и в начале каждого модуля директивы {$F+}. Альтернатив-
ный способ состоит в изменении принятой по умолчанию установки $F
на {$F+} с помощью директивы командной строки /$F+ или с помощью
параметра Force Far Calls (Использовать дальний тип вызова) в ди-
алоговом меню Options│Compiler (Параметры│Компилятор) среды IDE
интерактивного компилятора. По сравнению со смешанным использова-
нием вызовов ближнего и дальнего типа использование вызовов толь-
ко типа FAR не приводит к особенно большим дополнительным затра-
там памяти: для этого требуется одно дополнительное слово прост-
ранства стека на активную процедуру и один дополнительный байт на
каждый вызов.