Директивы компилятора: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Строка 1: Строка 1:
== Основные директивы, обрабатываемые препроцессором ==
== Основные директивы, обрабатываемые препроцессором ==


'''{$apptype <тип приложения>}''' - Задание типа приложения.
'''{$apptype <тип приложения>}''' - Задание типа приложения (windows/console).


'''{$reference <имя файла>}''' - Подключение библиотеки.
'''{$reference <имя файла>}''' - Подключение библиотеки.


'''{$gendoc <параметр>}''' - Генерация документации в XML формате. Параметры: '''true''', '''false'''.
'''{$gendoc <параметр>}''' - Генерация документации в XML формате. Параметры: '''true''', '''false'''.
'''{$mainresource <имя файла>}''' - Подключение .res файла в качестве неуправляемого ресурса
'''{$resource <имя файла>}''' - Подключение файла в качестве управляемого ресурса
'''{$product <название продукта>}''' - Название продукта
'''{$version <версия продукта>}''' - Версия продукта
'''{$company <компания>}''' - Компания
'''{$copyright <копирайт>}''' - Копирайт
'''{$trademark <торговая марка>}''' - Торговая марка


'''{$include <имя файла>}''' - Включение в текст программы содержимого указанного файла.
'''{$include <имя файла>}''' - Включение в текст программы содержимого указанного файла.
Строка 22: Строка 36:


Директивы '''$ifdef''', '''$ifndef''' совместно с директивами '''$else''' и '''$endif''' управлют условной компиляцией частей исходного файла. Каждой директиве '''$ifdef''', '''$ifndef''' должна соответствовать завершающая ее директива '''$endif'''. Между директивами '''$ifdef''', '''$ifndef''' и '''$endif''' допускается произвольное количество блоков условной компиляции (в том числе вложенных) и не более одной директивы '''$else'''.
Директивы '''$ifdef''', '''$ifndef''' совместно с директивами '''$else''' и '''$endif''' управлют условной компиляцией частей исходного файла. Каждой директиве '''$ifdef''', '''$ifndef''' должна соответствовать завершающая ее директива '''$endif'''. Между директивами '''$ifdef''', '''$ifndef''' и '''$endif''' допускается произвольное количество блоков условной компиляции (в том числе вложенных) и не более одной директивы '''$else'''.


== Пример программы с использованием директив компилятора ==
== Пример программы с использованием директив компилятора ==

Версия от 19:06, 8 июня 2011

Основные директивы, обрабатываемые препроцессором

{$apptype <тип приложения>} - Задание типа приложения (windows/console).

{$reference <имя файла>} - Подключение библиотеки.

{$gendoc <параметр>} - Генерация документации в XML формате. Параметры: true, false.

{$mainresource <имя файла>} - Подключение .res файла в качестве неуправляемого ресурса

{$resource <имя файла>} - Подключение файла в качестве управляемого ресурса

{$product <название продукта>} - Название продукта

{$version <версия продукта>} - Версия продукта

{$company <компания>} - Компания

{$copyright <копирайт>} - Копирайт

{$trademark <торговая марка>} - Торговая марка

{$include <имя файла>} - Включение в текст программы содержимого указанного файла.

{$define <идентификатор>} - Определение имени, используемого в директивах $ifdef, $ifndef.

{$undef <идентификатор>} - Исключение имени, используется для отмены действия директивы $define.

{$ifdef <идентификатор>} - Начало блока условной компиляции (проверяется условие: "идентификатор определен").

{$ifndef <идентификатор>} - Начало блока условной компиляции (проверяется условие: "идентификатор не определен").

{$else} - Директива "иначе" в блоке условной компиляции.

{$endif} - Завершение блока условной компиляции.

Директивы $ifdef, $ifndef совместно с директивами $else и $endif управлют условной компиляцией частей исходного файла. Каждой директиве $ifdef, $ifndef должна соответствовать завершающая ее директива $endif. Между директивами $ifdef, $ifndef и $endif допускается произвольное количество блоков условной компиляции (в том числе вложенных) и не более одной директивы $else.

Пример программы с использованием директив компилятора

{$apptype console} 
{$reference library.dll} 
{$define DEBUG} 
{$define GO}
begin
  {$ifdef GO} 
    {$ifndef DEBUG}
      writeln('Имя DEBUG не определено');
    {$else} 
      writeln('Имя DEBUG определено');
    {$endif}
  {$endif}
 
  {$include test.pas}
end.


Отключение препроцессора

Для отключения препроцессора необходимо закомментировать следующие строки в файле Core\Parsers\PascalABCParser\Parser.cs 216 225-228 237-238 246-247