- Макроподстановка (#define)
- Свойства программ (#property)
- Включение файлов (#include)
- Импорт функций (#import)
- Условная компиляция (#ifdef, #ifndef, #else, #endif)
Условная компиляция (#ifdef, #ifndef, #else, #endif)
Директивы препроцессора используются компилятором для предварительной обработки исходного кода перед его компиляцией. Директива всегда начинается со знака # (решетка), поэтому компилятор запрещает использовать данный символ в именах переменных, функций и т.д.
Каждая директива описывается отдельной записью и действует до переноса строки. Нельзя в одной записи использовать несколько директив. Если запись директивы получается слишком большой, то её можно разбить на несколько строк с помощью обратного слеша '\', в таком случае следующая строка будет считаться продолжением записи директивы.
Директивы условной компиляции препроцессора позволяют компилировать или пропускать часть программы в зависимости от выполнения некоторого условия.
Условие может принимать одну из описываемых ниже форм.
#ifdef identifier
|
За любой из команд условной компиляции может следовать произвольное число строк, содержащих, возможно, команду вида #else и заканчивающихся #endif. Если проверяемое условие справедливо, то строки между #else и #endif игнорируются. Если же проверяемое условие не выполняется, то игнорируются все строки между проверкой и командой #else, а если ее нет, то командой #endif.
Пример:
#ifndef TestMode
|
В зависимости от типа программы и режима компиляции стандартные макросы определяются следующим образом:
Макрос __MQL5__ доступен при компиляции файла *.mq5, при компиляции *.mq4 доступен макрос __MQL4__.
Макрос _DEBUG доступен при компиляции под отладку.
Макрос _RELEASE доступен при компиляции не под отладку.
Пример:
//+------------------------------------------------------------------+
|