Директивы компилятора: различия между версиями
MZ (обсуждение | вклад) |
Mikst (обсуждение | вклад) |
||
(не показано 19 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
== Основные директивы, обрабатываемые препроцессором == | |||
'''{$apptype <тип приложения>}''' - Задание типа приложения (windows/console). | |||
'''{$reference <имя файла>}''' - Подключение библиотеки. | |||
'''{$gendoc <параметр>}''' - Генерация документации в XML формате. Параметры: '''true''', '''false'''. | |||
'''{$resource <имя файла>}''' - Подключение файла в качестве управляемого ресурса | |||
'''{$product <название продукта>}''' - Название продукта | |||
'''{$version <версия продукта>}''' - Версия продукта | |||
'''{$company <компания>}''' - Компания | |||
'''{$copyright <копирайт>}''' - Копирайт | |||
'''{$trademark <торговая марка>}''' - Торговая марка | |||
'''{$include <имя файла>}''' - Включение в текст программы содержимого указанного файла. | '''{$include <имя файла>}''' - Включение в текст программы содержимого указанного файла. | ||
'''{$define <идентификатор>}''' - Определение имени, используемого в директивах $ifdef, $ifndef. | '''{$define <идентификатор>}''' - Определение имени, используемого в директивах '''$ifdef''', '''$ifndef'''. | ||
'''{$undef <идентификатор>}''' - Исключение имени, используется для отмены действия директивы $define. | '''{$undef <идентификатор>}''' - Исключение имени, используется для отмены действия директивы '''$define'''. | ||
'''{$ifdef < | '''{$ifdef <идентификатор>}''' - Начало блока условной компиляции (проверяется условие: "идентификатор определен"). | ||
'''{$ifndef < | '''{$ifndef <идентификатор>}''' - Начало блока условной компиляции (проверяется условие: "идентификатор не определен"). | ||
'''{$else}''' - Директива "иначе" в блоке условной компиляции. | '''{$else}''' - Директива "иначе" в блоке условной компиляции. | ||
Строка 16: | Строка 33: | ||
'''{$endif}''' - Завершение блока условной компиляции. | '''{$endif}''' - Завершение блока условной компиляции. | ||
'''{$faststrings}''' - Строки с быстрым доступом к символам на запись, но со ссылочной семантикой. | |||
'''{$ | '''{$savepcu false}''' - Отключает создание pcu | ||
'''{$ | '''{$platformtarget x86}''' - предназначена для компиляции с 32-битными dll | ||
Директивы '''$ifdef''', '''$ifndef''' совместно с директивами '''$else''' и '''$endif''' управлют условной компиляцией частей исходного файла. Каждой директиве '''$ifdef''', '''$ifndef''' должна соответствовать завершающая ее директива '''$endif'''. Между директивами '''$ifdef''', '''$ifndef''' и '''$endif''' допускается произвольное количество блоков условной компиляции (в том числе вложенных) и не более одной директивы '''$else'''. | |||
== Пример программы с использованием директив компилятора == | == Пример программы с использованием директив компилятора == | ||
{$apptype console} | |||
{$reference library.dll} | {$reference library.dll} | ||
{$define DEBUG} | {$define DEBUG} | ||
begin | {$define GO} | ||
begin | |||
{$ifdef GO} | |||
{$ifndef DEBUG} | |||
writeln('Имя DEBUG не определено'); | |||
{$else} | |||
writeln('Имя DEBUG определено'); | |||
{$endif} | |||
{$endif} | |||
{$include test.pas} | |||
end. | end. | ||
== Отключение препроцессора == | |||
Для отключения препроцессора необходимо закомментировать следующие строки в файле Core\Parsers\PascalABCParser\Parser.cs | |||
216 | |||
225-228 | |||
237-238 | |||
246-247 |
Текущая версия от 21:24, 17 августа 2019
Основные директивы, обрабатываемые препроцессором
{$apptype <тип приложения>} - Задание типа приложения (windows/console).
{$reference <имя файла>} - Подключение библиотеки.
{$gendoc <параметр>} - Генерация документации в XML формате. Параметры: true, false.
{$resource <имя файла>} - Подключение файла в качестве управляемого ресурса
{$product <название продукта>} - Название продукта
{$version <версия продукта>} - Версия продукта
{$company <компания>} - Компания
{$copyright <копирайт>} - Копирайт
{$trademark <торговая марка>} - Торговая марка
{$include <имя файла>} - Включение в текст программы содержимого указанного файла.
{$define <идентификатор>} - Определение имени, используемого в директивах $ifdef, $ifndef.
{$undef <идентификатор>} - Исключение имени, используется для отмены действия директивы $define.
{$ifdef <идентификатор>} - Начало блока условной компиляции (проверяется условие: "идентификатор определен").
{$ifndef <идентификатор>} - Начало блока условной компиляции (проверяется условие: "идентификатор не определен").
{$else} - Директива "иначе" в блоке условной компиляции.
{$endif} - Завершение блока условной компиляции.
{$faststrings} - Строки с быстрым доступом к символам на запись, но со ссылочной семантикой.
{$savepcu false} - Отключает создание pcu
{$platformtarget x86} - предназначена для компиляции с 32-битными dll
Директивы $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