компиляции нажатием комбинации Ctrl+O+O; в результате в файле могут оказаться такие, например, строки.

{$A+,B-,D+,E-,F-,G+,I-,L+,N+,O-,P-,Q-,R-,S-,T+,V-,X+,Y+}

{$M 16384,0,655360}

Сохраните этот файл, пусть он называется «Options.inc» (не забудьте указать расширение). Затем в первой строке каждого модуля, где вы намерены применить эти опции, вставьте директиву {$I Options}.

{$I Options}

...

Теперь компиляция всех файлов с одинаковыми настройками гарантирована, поскольку опции, заданные в директивах, преобладают над «менюшными». Потребовалось изменить настройки? – тогда исправьте только файл «Options.inc» и повторно откомпилируйте проект.

Условная компиляция

Моряка украшает загрубелое лицо, землекопа выдают мозолистые руки, а программиста – шишки, набитые при отладке программ. И это не шутка! Отладка – пожалуй, самая сложная часть работы, и здесь уместны разные хитрости.

Одно из таких ухищрений – печать промежуточных результатов или так называемая трассировка, – вы знакомы с этим приемом. По завершении отладки, расставленные там и сям, операторы трассировки только мешают, – их приходится удалять. Умные программисты не убирают их навсегда, а комментируют, то есть заключают в фигурные скобки, – а вдруг ещё пригодятся? А хитрые поступают иначе. «Зачем мне копаться в файлах проекта, выискивая лишние операторы? – рассуждают они, – пусть компилятор сделает это сам». Здесь они уповают на условную компиляцию.

Условная компиляция – это механизм, встроенный в компиляторы многих современных языков. Через него можно указать части программы, которые, в определенных случаях, компилировать не следует. Пропущенные таким образом куски программы равносильны комментариям. Условная компиляция организуется двумя директивами, с которыми мы сейчас ознакомимся.

Первая из них – $DEFINE – определяет некоторое имя. Это имя никак не связано с именами переменных, процедур и прочих объектов программы и может даже совпадать с ними – это не опасно. Определенное директивой имя используется лишь для условной компиляции так, как это будет показано далее. Вот парочка примеров определения таких имен.

{ $define Test }

{ $define Print }

Вторая директива – это собственно директива условной компиляции. Она похожа на условный оператор Паскаля, – не путайте их! Условный оператор срабатывает при исполнении программы, а директива – при компиляции проекта. Повторяю: директива условной компиляции – это всего лишь подсказка компилятору со стороны программиста!

Подобно условному оператору, такая директива выражается тремя словами, образующими две ветви компиляции.

{ $ifdef ABC – начало директивы }

      { эта часть скомпилируется, если имя ABC определено }

{ $else }

      { эта часть скомпилируется, если имя ABC НЕ определено }

{ $endif }

Посредством $IFDEF компилятор проверяет, определено ли где-то ранее директивой $DEFINE некоторое имя. Если да, то следующие за директивой операторы, вплоть до $ELSE будут откомпилированы, а иначе – пропущены. Операторы, следующие за $ELSE, ждет обратная участь. Возможен и сокращенный вариант директивы, содержащий лишь одну ветвь компиляции.

{ $ifdef ABC – начало директивы }

      { эта часть скомпилируется, если имя ABC определено }

{ $endif }

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату