Ошибки компиляции
MetaEdtior 5, редактор mql5-программ, выдает сообщения об ошибках программы, обнаруженных встроенным компилятором на стадии компиляции. Список этих ошибок приведен ниже в таблице. Для компиляции исходного кода в исполняемый нажмите F7. Программы с ошибками не могут быть скомпилированы, пока ошибки, указанные компилятором, не будут устранены.
Номер |
Описание |
---|---|
Ошибка чтения файла |
|
Ошибка открытия *.EX5 файла для записи |
|
Недостаточно свободной памяти для завершения компиляции |
|
Нераспознанная компилятором пустая синтаксическая единица |
|
Некорректное имя файла в #include |
|
Ошибка доступа к файлу в #include (возможно файл не существует) |
|
Неподходящее имя для #define |
|
Неизвестная команда препроцессора (допустимы #include,#define,#property,#import) |
|
Неизвестный для компилятора символ |
|
Функция не реализована (описание есть, тела нет) |
|
Пропущена двойная кавычка (") |
|
Пропущена открывающая угловая скобка (<) или двойная кавычка (") |
|
Пропущена одинарная кавычка (') |
|
Пропущена закрывающая угловая скобка ">" |
|
Не указан тип в объявлении |
|
Нет оператора возврата return или имеется не во всех ветках выполнения |
|
Ожидалась открывающая скобка параметров вызова |
|
Ошибка записи EX5 |
|
Некорректный доступ к элементу массива |
|
Функция не имеет тип void и оператор return должен вернуть значение |
|
Некорректное объявление деструктора |
|
Отсутствует двоеточие ":" |
|
Переменная уже объявлена |
|
Переменная с таким идентификатором уже объявлена |
|
Имя переменной слишком длинное (>250 символов) |
|
Структура с таким идентификатором уже определена |
|
Структура не определена |
|
Член структуры с таким именем уже определен |
|
Нет такого члена структуры |
|
Нарушена парность квадратных скобок |
|
Ожидается открывающая круглая скобка "(" |
|
Несбалансированные фигурные скобки ( отсутствует "}" ) |
|
Сложно для компиляции (слишком большое ветвление, внутренний стек уровней переполнен) |
|
Ошибка открытия файла на чтение |
|
Недостаточно памяти для загрузки исходного файла в память |
|
Ожидается переменная |
|
Ссылка не может быть инициализирована |
|
Ожидалось присваивание (возникает при объявлении) |
|
Ожидается открывающая фигурная скобка "{" |
|
Параметр может быть только динамическим массивом |
|
Использование типа "void" недопустимо |
|
Нет пары для ")" или "]", т.е. отсутствует "(" или "[" |
|
Нет пары для "(" или "[", т.е. отсутствует ")" или "]" |
|
Некорректная размерность массива |
|
Слишком много параметров (>64) |
|
Этот токен тут не ожидается |
|
Недопустимое использование операции (неправильные операнды) |
|
Выражение типа void недопустимо |
|
Ожидается оператор |
|
Неправильное использование break |
|
Ожидается точка с запятой ";" |
|
Ожидается запятая "," |
|
Тип должен быть определен как класс, а не как структура |
|
Ожидалось выражение |
|
В HEX встречается "не HEX символ" или слишком длинное число (количество цифр > 511) |
|
Строка-константа имеет более 65534 символов |
|
Определение функции здесь недопустимо |
|
Неожиданный конец программы |
|
Форвардная декларация для структур запрещена |
|
Функция с таким именем уже определена и имеет иной тип возвращаемого значения |
|
Функция с таким именем уже определена и имеет иной набор параметров |
|
Функция с таким именем уже определена и реализована |
|
Перегрузка функции для данного вызова не найдена |
|
Функция с возвращаемым значением типа void не может возвращать значение |
|
Функция не определена |
|
Ожидается значение |
|
В выражении case допустимы только целочисленные константы |
|
Значение для case в этом switch уже использовано |
|
Ожидается целочисленное значение |
|
В выражении #import ожидается имя файла |
|
Выражения на глобальном уровне не допустимы |
|
Пропущена круглая скобка ")" перед ";" |
|
Слева от знака равенства предполагается переменная |
|
Результат выражения не используется |
|
Объявление переменных в case недопустимо |
|
Неявное преобразование из строки в число |
|
Неявное преобразование числа в строку |
|
Неоднозначный вызов перегруженной функции (подходят несколько перегрузок) |
|
Недопустимый else без соответствующего if |
|
Недопустимый case или default без соответствующего switch |
|
Недопустимое использование эллипсиса |
|
Инициализирующая последовательность имеет большее количество элементов чем инициализируемая переменная |
|
Ожидается константа для case |
|
Требуется константное выражение |
|
Константная переменная не может быть изменена |
|
Ожидается закрывающая скобка или запятая (объявление члена массива) |
|
Идентификатор перечисления уже используется |
|
Перечисление не может иметь модификаторов доступа (const, extern, static) |
|
Член перечисления уже объявлен с другим значением |
|
Существует переменная, определенная с таким же именем |
|
Существует структура, определенная с таким же именем |
|
Ожидается имя члена перечисления |
|
Ожидается целочисленное выражение |
|
Деление на ноль в константном выражении |
|
Неверное количество параметров в функции |
|
Параметром по ссылке должна быть переменная |
|
Ожидается переменная такого же типа для передачи по ссылке |
|
Константная переменная не может быть передана по неконстантной ссылке |
|
Требуется целочисленная положительная константа |
|
Ошибка доступа к защищенному члену класса |
|
Импорт уже определен по другому пути |
|
Исполняемый файл не создан |
|
Для индикатора не найдена точка входа 'OnCalculate' |
|
Оператор continue может быть использован только внутри цикла |
|
Ошибка доступа к private(закрытому) члену класса |
|
Метод структуры или класса не объявлен |
|
Ошибка доступа к private(закрытому) методу класса |
|
Копирование структур с объектами недопустимо |
|
Выход индекса за границы массива |
|
Недопустима инициализация массивов в объявлении структуры или класса |
|
Конструктор класса не может иметь параметров |
|
Деструктор класса не может иметь параметров |
|
Метод класса или структуры с таким именем и параметрами уже объявлен |
|
Ожидается операнд |
|
Метод класса или структуры с таким именем есть, но с другими параметрами (объявление!=реализация) |
|
Импортируемая функция не описана |
|
Функция ZeroMemory() не применима для классов с защищенными членами или наследованием |
|
Неоднозначный вызов перегруженной функции (точное совпадение параметров для нескольких перегрузок) |
|
Ожидается имя переменной |
|
Ссылку нельзя объявить в этом месте |
|
Уже используется в качестве имени перечисления |
|
Ожидается класс или структура |
|
Нельзя вызывать delete для удаления массива |
|
Ожидается оператор ' while ' |
|
В delete должен быть указатель |
|
default для этого switch уже есть |
|
Синтаксическая ошибка |
|
Escape-последовательность может встретиться только в строках ( начинается с '\' ) |
|
Требуется массив – квадратная скобка '[' не относится к массиву либо в качестве параметра-массива подают не массив |
|
Не может быть инициализировано посредством инициализирующей последовательности |
|
Импорт не определен |
|
Ошибка оптимизатора на синтаксическом дереве |
|
Объявлено слишком много структур (упростите программу) |
|
Преобразование параметра недопустимо |
|
Некорректное использование оператора delete |
|
Нельзя объявить указатель на ссылку |
|
Нельзя объявить ссылку на ссылку |
|
Нельзя объявить указатель на указатель |
|
Недопустимо объявление структуры в списке параметров |
|
Недопустимая операция приведения типов |
|
Указатель можно объявить только для класса или структуры |
|
Необъявленный идентификатор |
|
Ошибка оптимизатора исполняемого кода |
|
Ошибка генерации исполняемого кода |
|
Недопустимое выражение для оператора switch |
|
Переполнение пула строковых констант, упростите программу |
|
Невозможно преобразовать к перечислению |
|
Нельзя использовать virtual для данных (членов класса или структуры) |
|
Нельзя вызвать защищенный метод класса |
|
Переопределяемая виртуальная функция возвращает другой тип |
|
Класс нельзя наследовать от структуры |
|
Структуру нельзя наследовать от класса |
|
Конструктор не может быть виртуальным (спецификатор virtual недопустим) |
|
Структура не может иметь виртуальных методов |
|
Функция должна иметь тело |
|
Перегрузка системных функций (функций терминала) запрещена |
|
Спецификатор const недопустим для функций, не являющихся членом класса или структуры |
|
Нельзя менять члены класса в константном методе |
|
Неподходящая инициализирующая последовательность |
|
Пропущено значение по умолчанию для параметра (специфика объявления параметров по умолчанию) |
|
Переопределение параметра по умолчанию (в объявлении и реализации разные значения) |
|
Нельзя вызвать неконстантный метод для константного объекта |
|
Для доступа к членам требуется объект (поставлена точка для не класса/структуры) |
|
Имя уже объявленной структуры нельзя использовать при объявлении |
|
Неразрешенное преобразование (при закрытом наследовании) |
|
Структуры и массивы не могут быть использованы в качестве input-переменных |
|
Спецификатор const недопустим для конструктора/деструктора |
|
Неправильное строковое выражение для типа datetime |
|
Неизвестное свойство (#property) |
|
Некорректное значение для свойства |
|
Некорректный индекс для свойства в #property |
|
Пропущен параметр вызова – < func(x,) > |
|
Объект должен быть передан по ссылке |
|
Массив должен быть передан по ссылке |
|
Функция была декларирована как экспортируемая |
|
Функция не была декларирована как экспортируемая |
|
Экспортировать импортируемую функцию нельзя |
|
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) |
|
Должен быть класс |
|
Секция #import не закрыта |
|
Несоответствие типов |
|
extern-переменная уже инициализирована |
|
Не найдено ни одной экспортируемой функции или стандартной точки входа |
|
Явный вызов конструктора запрещен |
|
Метод был объявлен константным |
|
Метод не был объявлен константным |
|
Некорректный размер ресурсного файла |
|
Некорректное имя ресурса |
|
Ошибка открытия файла ресурса |
|
Ошибка чтения файла ресурса |
|
Неизвестный тип ресурса |
|
Некорректный путь к файлу ресурса |
|
Указанное имя ресурса уже используется |
|
Ожидались параметры макроса |
|
После имени макроса должен быть пробел |
|
Ошибка в описании параметров макроса |
|
Неверное число параметров при использовании макроса |
|
Превышение максимального количества(16) параметров для макроса |
|
Макрос слишком сложный, требуется упрощение |
|
Параметром EnumToString() может быть только перечисление |
|
Имя ресурса слишком длинное |
|
Неподдерживаемый формат изображения (допустим только BMP-формат с глубиной цвета 24 или 32 бита) |
|
Объявление массива внутри оператора запрещено |
|
Функцию можно определить только на глобальном уровне |
|
Данное объявление недопустимо для текущей области видимости (области определения) |
|
Инициализация статичных переменных значениями локальных недопустима |
|
Недопустимое объявление массива объектов, не имеющих конструктора по умолчанию |
|
Список инициализации разрешен только для конструкторов |
|
Отсутствует определение функции после списка инициализации |
|
Список инициализации пуст |
|
Инициализация массива в конструкторе запрещена |
|
В списке инициализации запрещено инициализировать члены родительского класса |
|
Ожидалось выражение целого типа |
|
Требуемый объем памяти для массива превышает максимально допустимое значение |
|
Требуемый объем памяти для структуры превышает максимально допустимое значение |
|
Требуемый объем памяти для переменных, объявленных на глобальном уровне, превышает максимально допустимое значение |
|
Требуемый объем памяти для локальных переменных превышает максимально допустимое значение |
|
Конструктор не определен |
|
Недопустимое имя для файла иконки |
|
Не удалось открыть файла иконки по указанному пути |
|
Файл иконки некорректен и не соответствует формату ICO |
|
Повторная инициализация члена в конструкторе класса/структуры с помощью списка инициализации |
|
Инициализация статических членов в списке инициализации конструктора не допускается |
|
Инициализация нестатического члена класса/структуры на глобальном уровне запрещена |
|
Имя метода класса/структуры совпадает с ранее объявленным именем члена |
|
Имя члена класса/структуры совпадает с ранее объявленным именем метода |
|
Виртуальная функция не может быть объявлена как static |
|
Модификатор const недопустим для статической функции |
|
Конструктор или деструктор не могут быть статическими |
|
Нельзя обращаться к нестатическому члену/методу класса или структуры из статической функции |
|
После ключевого слова operator ожидается перегружаемая операция (+,-,[],++,-- и т.д.) |
|
Не все операции можно перегружать в MQL5 |
|
Определение не соответствует объявлению |
|
Указано неверное количество параметров для оператора |
|
Не обнаружено ни одной функции-обработчика события |
|
Методы не могут быть экспортируемыми |
|
Нельзя приводить указатель на константный объект к указателю на неконстантный объект |
|
Шаблоны классов пока не поддерживаются |
|
Перегрузка шаблонов функций пока не поддерживается |
|
Невозможно применить шаблон функции |
|
Неоднозначный параметр в шаблоне функции (подходят несколько типов параметра) |
|
Невозможно определить к какому типу параметра приводить аргумент шаблона функции |
|
Неверное количество параметров в шаблоне функции |
|
Шаблон функции не может быть виртуальным |
|
Шаблоны функций не могут быть экспортированы |
|
Нельзя импортировать шаблоны функций |
|
Структуры, содержащие объекты, недопустимы |
|
Массивы строк и структуры, содержащие объекты, недопустимы |
|
Статический член класса/структуры должен быть явно инициализирован |
|
Ограничение компилятора: строка не может содержать более 65 535 символов |
|
Несогласованные #ifdef/#endif |
|
Результатом выполнения функции не может быть объект класса, так как отсутствует конструктор копирования |
|
Нельзя использовать нестатические члены и/или методы при инициализации статической переменной |
|
OnTesterInit() нельзя использовать без объявления обработчика OnTesterDeinit() |
|
Имя локальной переменной совпадает с именем одного из параметров функции |
|
Нельзя использовать макросы __FUNCSIG__ и __FUNCTION__ вне тела функции |
|
Недопустимый возвращаемый тип. Например, такая ошибка будет выдана для функций, импортированных из DLL, которые возвращают структуру или указатель в качестве результата |
|
Ошибка при использовании шаблона |
|
Не используется |
|
Недопустимый синтаксис при объявлении чисто виртуальной функции, разрешено "=NULL" или "=0" |
|
Только виртуальные функции могут быть объявлены со спецификатором чисто виртуальной функции ("=NULL" или "=0") |
|
Нельзя создать экземпляр абстрактного класса |
|
Для динамического приведения с помощью оператора dynamic_cast типом назначения должен быть указатель на пользовательский тип |
|
Ожидается тип "указатель на функцию" |
|
Указатели на методы не поддерживаются |
|
Ошибка – невозможно определить тип указателя на функцию |
|
Приведение типа недоступно из-за закрытого наследования |
|
Переменная с модификатором const должна быть проинициализирована при объявлении |
|
В интерфейсе могут быть объявлены только методы с публичным доступом |
|
Недопустимое вложение интерфейса в другой интерфейс |
|
Интерфейс может наследоваться только от другого интерфейса |
|
Ожидается интерфейс |
|
Интерфейсы поддерживают только публичное наследование |
|
Интерфейс не может содержать члены |
|
Нельзя создавать объекты интерфейса напрямую, только через наследование |
|
Спецификатор нельзя использовать в форвардном объявлении |
|
Наследование от данного класса невозможно, так как он объявлен со спецификатором final |
|
Нельзя переопределить метод, объявленный со спецификатором final |
|
Спецификатор final можно применять только к виртуальным функциям |
|
Метод, помеченный спецификатором override, на самом деле не перекрывает никакую функцию базового класса |
|
Спецификатор не разрешен в определении функции, только в объявлении |
|
Невозможно привести данный тип к указанному |
|
Данный тип нельзя использовать для ресурсной переменной |
|
Ошибка в файле проекта |
|
Не может быть использован в качестве члена union |
|
Неоднозначность выбора для данного имени, необходимо явно определить контекст использования |
|
Нельзя использовать данную структуру из DLL |
|
Нельзя вызывать функцию, помеченную спецификатором delete |
|
MQL4 не поддерживается. Для компиляции этой программы используйте MetaEditor, который находится в папке установке вашего терминала MetaTrader 4 |