Четвертый BORLAND С++ и его окружение

       

Директивы условного выполнения


Директивы условного выполнения (!if, !elif, !else и !endif)

предоставляют вам определенную степень гибкости при конструировании формирующих файлов. Правила и макрокоманды можно сделать условными, поэтому, используя в командной строке макроопределения (с помощью параметра -D), можно задавать или отменять интерпретацию определенных разделов формирующих файла.

Формат этих директив аналогичен тому, который используется в

Си, ассемблере и Паскале:

!if выражение

[строки]

.

.

.

!endif

!if выражение

[строки]

.



.

.

!else

[строки]

.

.

.

!endif

!if выражение

[строки]

.

.

.

!elif выражение

[строки]

.

.

.

!endif

!ifdef макрокоманда

[строки]

.

.

.

!endif выражение

[строки]

!ifndef макрокоманда

[строки]

.

.

.

!endif выражение

[строки]

где [строки] могут представлять собой один из следующих типов

операторов:

  • макроопределение;
  • явное правило;
  • неявное правило;
  • директива включения файла include;
  • группа оператора if;
  • директива выдачи сообщения об ошибке error;
  • директива отмены макроопределения undef.
  • Директивы условного выполнения образуют группу, которая состоит как минимум из открывающей группу директивы !if и завершающей группу директивы !endif.

  • в группе может присутствовать только одна директива !else.
  • директивы !elif могут располагаться между директивами !if и else.
  • правила, макрокоманды и другие директивы могут располагаться между различными директивами условного выполнения; число их не ограничено. Следует отметить, что полные правила с их командами не могут разделяться директивами условного выполнения.
  • допускается любая степень вложения групп директив условно го выполнения.
  • Любые правила, команды и директивы должны завершаться внутри

    одного исходного файла.

    Всем директивам !if внутри одного исходного файла должны соответствовать директивы !endif. Таким образом, следующее включение файла является неверным вне зависимости от того, какое содержание имеет файл, включающий данный, поскольку в нем не

    содержится парная директива !endif:

    !if $(FILE_COUNT) > 5

    какие-либо правила

    !else

    другие правила

    <конец файла>

    Еще один способ определения макрокоманды предоставляет директива !ifdef. Директива !ifdef MACRO эквивалентна !if

    $d(MACRO). Это верно также для директивы !ifndef: директива

    !ifdef MACRO эквивалентна !if $d(MACRO).



    Содержание раздела