|
| ||||||||||||
| ||||||||||||
|
Перечень сообщений
- L -Last parameter of операция must have type int При описании постфиксных операций operator++ или operator-- последний параметр должен описываться с типом int. Library contains COMDEF recors - extended dictionary not created Объектная запись, добавляемая к словарю, содержит запись COMDEF. Это несовместимо с параметром расширенного словаря. Library too large, please restart with page size размер Создаваемая библиотека не может быть построена с текущим размером страницы библиотеки. Linkage specification not allowed Спецификации типа компоновки, например extern "C", допустимы только на уровне файла. Перенесите данное объявление функции на уровень файла. Linker name conflict for функция При правке имен в С++ подставляемая функция или виртуальная таблица слишком велики и были усечены (чаще всего это происходит с шаблонами), а усеченные имена совпадают с ранее сгенерированной функцией или виртуальной таблицей. Эта ошибка выводится компилятором. Ошибку можно исправить изменением имени функции или класса или компиляцией с параметром -Vs. Linker stack overflow Чтобы отмечать модуль, включаемые в выполняемый образ из библиотек, TLINK использует рекурсивную процедуру. В некоторых ситуациях эта процедура может привести к переполнению стека. Если вы получите данное сообщение об ошибке, удалите из библиотек некоторые модули, включите их в объектные файлы при компоновке и повторите попытку. Lvalue required Левая часть операции присваивания должна являться адресуемым выражением. Сюда входят числовые переменные или указатели-переменные, ссылки на поля структур, либо обращение по ссылке через указатель, либо элемент массива, заданный индексом. - M -Macro argument syntax error Аргумент в определении макрокоманды должен являться идентификатором. Компилятор встретил некоторый символ, который не может являться частью идентификатора, там, где ожидался аргумент. Macro expansion too long Размер макрорасширения не может превышать 4096 символов. Macro expansion too long Макроопределение не может расширяться более, чем на 4096 знаков. Такая ошибка часто появляется, если осуществляется регулярное макрорасширение. Макроопределение не может правильно расширять самое себя. Macro substitute text строка is too long Текстовая строка макроподстановки переполняет внутренний буфер MAKE размером 512 байт. Macro replace text строка is too long Текстовая строка замены переполняет внутренний буфер MAKE размером 512 байт. main must have a return type of int К функции main предъявляются специальные требования. Одно из них состоит в том, что она не может иметь тип возврата иной, нежели int. Malformed command-line В командной строке найдена недопустимая запись. Matching base class function for функция has different dispatch number Если в производном классе описывается виртуальная динамическая функция (DDVT), то соответствующая функция базового класса должна иметь тот же номер диспетчеризации, что и производная функция. Matching base class function for функция is not dynamic Если в производном классе описывается виртуальная динамическая функция (DDVT), то соответствующая функция базового класса должна также быть динамической. Maximum precision used for member pointer type тип Если при описании типа указателя-элемента его класс описан не полностью, и использован параметр -Vmd, компилятор должен использовать наиболее общее (и наименее эффективное) представление для данного типа указателя-элемента. Это может привести не только к генерации менее эффективного кода (и к получению большего чем нужно элемента-указателя), но привести также к проблемам с раздельной компиляцией. См. описание параметра -Vm в Главе 4 "Компилятор, работающий в режиме командной строки" в "Руководстве пользователя". Member function must be called or its address taked Когда в выражении используется функция-элемент, то она должна либо вызываться, либо нужно получать ее адрес с помощью операции &. В этом случае функция-элемент используется в недопустимом контексте. Member identifier expected Здесь предполагается имя элемента или структуры С++, но оно не найдено. Правая часть операции точки (.) или стрелки (->) должна быть именем элемента структуры или класса, указанного в левой части операции. Member is ambiguous: элемент_1 and элемент_2 Вы должны уточнить ссылку на элемент с помощью соответствующего базового класса. В классе С++ класс элемент может встречаться более чем в одном базовом классе, и не было уточнено, что это означает. Это применяется только при множественном наследовании, когда имя элемента в каждом базовом классе не "скрывается" элементом с тем же именем в производном классе по тому же маршруту. Правила языка С++ требуют, чтобы эта проверка не неоднозначность выполнялась перед проверкой полномочий доступа (private, protected, public). Таким образом, можно получить данное сообщение, хотя доступен только один элемент (или ни одного). Member элемент cannot be used without an object Это означает, что пользователь записал класс::элемент, где элемент - это обычный (не статический) элемент, и класс, связываемый с данным элементом, отсутствует. Например, допустима запись:
объект.класс::элемент, но не класс::элемент.
Member элемент has the same name as its class Статический элемент данных, перечислитель, элемент неименованного объединения или вложенный тип не может иметь то же имя, что и его класс. Имя, совпадающее с именем его класса, может иметь только функция-элемент или нестатический элемент. Member элемент is initialized more than once В конструкторе класса С++, списке инициализации, следующем за заголовком конструктора, одно и то же имя элемента указано несколько раз. Member pointer requires on right side of .* or ->* Правая часть операций С++ .* или ->* должна описываться как указатель на элемент класса, задаваемый левой частью операции. В данном случае правая часть не является указателем элемента. Memory full listing truncated! Библиотекарь исчерпал память при создании файла листинга библиотеки. Файл будет создан, но он будет неполным. Memory reference expected Ассемблерный операнд не является ссылкой на память, которая требуется в данном месте. Скорее всего, вы забыли заключить индексный регистр в квадратные скобки, например, MOV AX,BX+SI вместо MOV AX,[BX+SI]. Misplaced break Компилятор обнаружил оператор break вне конструкции оператора switch или цикла. Misplaced continue Компилятор обнаружил оператор continue вне конструкции цикла. Misplaced decimal point Компилятор обнаружил десятичную точку в показателе степени константы с плавающей точкой. Misplaced elif directive Компилятор обнаружил директиву #elif без соответствующей ей директивы #if, #ifdef или #ifndef. Misplaced elif statement Директива !elif обнаружена без соответствующей ей директивы !if. Misplaced else Компилятор обнаружил оператор else без соответствующего ему оператора if. Это сообщение может быть вызвано как лишним оператором else, так и лишней точкой с запятой, отсутствием фигурной скобкой, либо некоторой синтаксической ошибкой в предыдущем операторе if. Misplaced else directive Компилятор встретил директиву #else без соответствующей ей директивы #if, #ifdef или #ifndef. Misplaced else statement Обнаружена директива !else без соответствующей ей директивы !if. Misplaced endif directive Компилятор встретил директиву #endif без соответствующей ей директивы #if, #ifdef или #ifndef. Misplaced endif statement Была обнаружена директива !endif без соответствующей ей директивы !if. имя_файла(номер_строки): Missing internal name В секции IMPORTS файла определения модуля имеется ссылка на запись, заданную с помощью имени модуля и порядкового значения. Когда запись задается порядковым значением, определению импорта нужно присвоить внутреннее имя. Это внутреннее имя, которое ваше программа использует для ссылки на импортируемое определение. В файле определения модуля должен использоваться следующий синтаксис:
<внутреннее_имя>=<имя_модуля>.<порядковое_значение>
Mixed common types in module модуль. Cannot mix COMDEFs and VIRDEFRs. COMDEF и VIRDEF смешивать нельзя. Чтобы запретить генерацию VIRDEF, включите параметр -Vs. Mixing pointers to different 'char' types Вы преобразовали указатель на char в указатель на unsigned char, либо наоборот без явного приведения типов. (Строго говоря, это допустимо, но на процессоре 8086 часто приводит к ошибочным результатам). Multiple base classes require explicit class names В конструкторе класса С++ каждый вызов конструктора базового класса в заголовке конструктора должен в случае, если имеется более одного непосредственного базового класса, включать имя базового класса. Multiple declaration for идентификатор Идентификатор объявлен более одного раза, что недопустимо. Это может произойти в случае противоречивых объявлений, например int a; double a;, в случае, когда функция объявлена двумя разными способами, либо при повторении некоторого объявления, не являющегося функцией extern или простой переменной. Multiple entry points defined В приложении определено несколько точек входа. Допускается только одна. идентификатор must be a member function Большинство функций-операций С++ может являться элементами классов или обычными функциями, не входящими в класс, однако некоторые из них обязательно должны быть элементами класса. Это функции operator =, operator ->, operator() и преобразования типов. Данная функция не является функцией-элементом, но должна являться таковой. идентификатор must be a member function or have a parameter of class type Большинство функций-операций С++ должно иметь неявный или явный аргумент типа класса. Данная функция-операция была объявлена вне класса и не имеет явного аргумента типа класса. идентификатор must be a previously defined class or struct Вы пытаетесь объявить идентификатор как базовый класс, тогда как он либо не является классом, либо не был еще полностью определен. Исправьте имя или реорганизуйте объявления. идентификатор must be a previoustly defined enumeration tag Данное объявление пытается обратиться к идентификатору, как к тегу типа enum, тогда как он не был объявлен в качестве такового. Исправьте имя или реорганизуйте объявления. функция must be declared with no parameters Данная функция-операция С++ была неправильно объявлена с аргументами. операция must be declared with one or no parameters Когда operator++ или operator-- описывается, как функция-элемент, она должна описываться, как не имеющая параметров (например, префиксная версия операции) или с одним параметром типа int (постфиксная версия). операция must be declared with one or two parameters Когда operator++ или operator-- описывается, как функция, не являющаяся элементом, она должна описываться с одним параметром (например, префиксная версия операции) или с двумя параметрами (постфиксная версия). функция must be declared with one parameter Данная функция-операция С++ была неправильно объявлена с более чем одним аргументом. функция must be declared with one or no parameter Operator++ или operator-- были описаны как функция-элемент, а они должны описываться без параметров или с одним параметром типа int. функция must be declared with one or two parameter Данная функция С++ была неправильно объявлена. Must take address of a memory location Ваш исходный файл использовал операцию получения адреса (&) в выражении, которое не может выполнять адресацию памяти, например, в случае регистровой переменной. - N -Need an identifier to declare В данном контексте для завершения объявления требовался идентификатор. Причиной этого сообщения мог стать typedef без имени или лишняя точка с запятой на уровне файла. В С++ это может быть имя класса, неправильно использованное в качестве другого рода идентификатора. No : following ? Операции вопросительный знак (?) и двоеточие (:) не соответствуют друг другу в данном выражении. Возможно, отсутствует двоеточие, либо неправильно вложена или отсутствует круглая скобка. No base class to initialize Конструктор класса С++ пытается неявно вызвать конструктор базового класса, тогда как этот класс был объявлен без базовых классов. Проверьте объявления. No closing quote В строковом выражении !if или !elif нет закрывающей кавычки. No declaration for function функция Это сообщение выдается при попытке вызова функции без ее предварительного объявления. В Си можно объявить функцию без прототипа, например "int func();". В С++ каждое объявление функции является также ее прототипом; приведенный пример эквивалентен "int func(void);". Объявление может быть записано как в классическом, так и в современном (с прототипом) стиле. No file name ending Имя файла в операторе включения !include не содержит закрывающей кавычки или угловой скобки. No file name ending Имя файла в операторе включения #include не содержит закрывающей кавычки или угловой скобки. No file names given Командная строка компилятора Borland C++ режима командной строки (BCC) не содержит имен файлов. Вы обязаны задать имя исходного файла. No internal name for IMPORT in .DEF file Файл .DEF имеет семантическую ошибку. Возможно перед именем модуля вы забыли включить внутреннее имя для импорта. No macro before = Перед тем, как присваивать значение, вы должны определить имя макрокоманды. No match found for wildcard выражение Нет файлов, соответствующих трафарету выражение, которые может найти MAKE. Например, если вы запишете:
prog.exe: *.obj
MAKE будет выводить сообщение об ошибке, если файлов с указанным расширением (OBJ) в текущем каталоге нет.
No module definition file specified: using defaults Компоновщик TLINK вызывался с одним из параметров Windows, но файл определения модуля не задан. No program starting address defined Это предупреждение означает, что ни в одном модуле не задан начальный стартовый адрес программы. Обычно это происходит из-за того, что вы забываете выполнить компоновку с модулем инициализации C0x.OBJ. При компоновке с динамически компонуемыми библиотеками (DLL.) Windows такое предупреждение выводиться не должно. No stack Такое предупреждение выводится, если ни в одном из модулей или объектных файлов и библиотек, включаемых в программу, не определяется сегмент стека. Для модели памяти TINY в Borland C++ (или для любой программы, которая будет преобразовываться в формат .COM) это нормальное сообщение. Для других программ (кроме DLL) это указывает на ошибку. Если данное сообщение генерируется в программе Borland C++ с моделью памяти, отличной от TINY, убедитесь, что вы используете корректные объектные файлы инициализации C0x. No stub fox fixup at адрес Эта ошибка возникает, когда целью корректировки является оверлейный сегмент, но для внешней цели заглушки не найдено. Обычно это является результатом того, что вы объявляете общедоступным идентификатор, на который имеется ссылка в том же модуле. No terminator specified for in-line file operator Формирующий файл содержит операции командной строки && или <<, начинающие встроенный файл, но файл не завершается. Non-const function функция called for const object Функция-элемент, не имеющая типа константы (const), вызвана для объекта типа константы. Это ошибка, но выдается только предупреждение, и программа получает шанс заработать. Nonportable pointer comparison В вашем исходном файле указатель сравнивается с не указателем, не являющимся нулевой константой. Если сравнение выполняется так, как вам нужно, можно использовать приведение типа, чтобы подавить вывод данного предупреждения. Nonportable pointer conversion Ненулевое целочисленное значение используется в контексте, где ожидается указатель или целое значение; размеры указателя и целого значения одинаковы. Если вы действительно намереваетесь использовать данное преобразование, следует выполнить явное приведение типов. Nonportable pointer conversion Требуется выполнение неявного преобразования между указателем и интегральным типом, но эти типы имеют разный размер. Такое преобразование не может выполняться без явного приведения типов. Оно может и не иметь смысла, поэтому проверьте, действительно ли это преобразование вам необходимо. Nonresident Name Table is greater than 64K Максимальный размер нерезидентной таблицы имен - 64К. Компоновщик продолжает работу, но игнорирует последующие нерезидентные имена. Nontype template argument must be of scalar type Нетипизированный формальный аргумент шаблона должен иметь скалярный тип. Он не может быть целым типом, перечислением или указателем. non-ANSI Keywork used: ключевое_слово Использовано ключевое слово, не соответствующее стандарту ANSI, в то время как задан параметр -A. Non-virtual function функция declared pure "Чистыми" (pure) могут объявляться только виртуальные функции, поскольку производные классы должны иметь возможность их переопределения. Non-volatile function called for volatile object В С++ функция-элемент класса была вызвана для объекта типа volatile, а сама функция после заголовка не была объявлена как "volatile". Для объекта volatile могут использоваться только функции volatile. имя_файла not a MAKE Файл, заданный с помощью параметра -f, не является формирующем файлом. Not an allowed type В вашем исходном файле содержится объявление некоторого неразрешенного типа; например, функции, возвращающую функцию или массив. Not enough memory Данная ошибка появляется, если вся рабочая память исчерпана. Вы должны попытаться осуществить то же на вычислительной машине с большой памятью. Если на вашей вычислительной машине имеется уже 640К, то упростите исходный файл. Not enough memory to run application Для работы компоновщика не хватает памяти. Попытайтесь уменьшить объем моделируемого в оперативной памяти диска или активного дискового буфера. Затем снова запустите TLINK. Если вы работаете в реальном режиме, попробуйте использовать параметр MAKE -S, удалив резидентные задачи и сетевые драйверы. При работе в защищенном режиме MAKE попробуйте уменьшить размер виртуального диска или активного дискового буфера. Not enough memory for command line buffer Данная ошибка происходит, когда TLIB исчерпывает доступную память. модуль not found in library При попытке выполнить для библиотеки операцию '-' или '*' указанный объект в библиотеке отсутствует. Null pointer assignment При выходе из программы с моделью памяти small (малая) или medium (средняя) выполняется проверка, чтобы определить, были ли изменены значения двух первых байт в сегменте данных программы. Эти байты никогда не должны изменяться работающей программой. Если же они были изменены, то выдается сообщение "Null pointer asignment", говорящее о том, что (вероятно) некоторое значение было записано в неинициализированный указатель. Во всех прочих отношениях программа может работать правильно. Однако данная ошибка является серьезной ошибкой, и ей следует заняться немедленно. Если вы не сможете исправить неинициализированный указатель, это приведет к непредсказуемому поведению компьютера (вплоть до его "блокирования" в случае моделей памяти large (большая), compact (компактная) и huge (сверхбольшая)). Для отслеживания таких ошибок может служить интегрированный отладчик, входящий в диалоговую среду разработки. Numeric constant too large Строковые и символьные управляющие последовательности больше шестнадцатиричного значения \xFF или восьмеричного \377 сгенерированы быть не могут. Двухбайтовые символьные константы могут задаваться при помощи второй обратной косой черты. Например, \x0D\x0A представляет собой двухбайтовую константу. Числовой литерал после управляющей последовательности следует разбить:
printf("\x0D" "12345");
Тем самым будет выведен возврат каретки и затем 12345.
- O -object module имя_файла is invalid Библиотекарь не может распознать запись заголовка объектного модуля, добавляемого к библиотеке, и предполагает, что это недопустимый модуль. Objects of type тип cannot be initialized with {} Обычные структуры Си могут инициализироваться набором значений, заключенных в фигурные скобки. Классы С++ могут инициализироваться с помощью конструкторов (если класс имеет конструкторы, локальных элементов, функций или базовых классов, которые являются виртуальными. Only <<KEEP or <<NOKEEP При закрытии временного встроенного файла вы задали что-то отличное от KEEP или NOKEEP. Only member functions may be 'const' or 'volatile' Как 'const' или 'volatile' описан какой-либо другой объект, отличный от функции-элемента. Only one of a set of overloaded functions can be "C" Функции С++ по умолчанию являются переопределяемыми, и компилятор присваивает каждой из них новое имя. Если вы хотите переопределить присваивание компилятором нового имени, объявив функцию "C", то можете сделать это только для одного из набора функций с тем же именем (в противном случае компоновщик обнаружит более одной глобальной функции с тем же именем). Operand of delete must be no-const pointer С помощью операции delete не допускается использовать указатель-константу. Operator [] missing ] В С++ operator[] была объявлена как operator[. Вы должны добавить недостающую квадратную скобку или еще как-либо исправить объявление. operator -> must return a pointer or a class Функция С++ операция operator-> должна быть объявлена как возвращающая класс или указатель на класс (или структуру либо объединение). В любом случае это должно быть нечто такое, к чему применима операция ->. Operator delete must return void Переопределенная операция С++ operator delete была объявлена иначе. Operator delete[] must return void Переопределенная операция С++ operator delete была объявлена иначе. Опишите delete с одним параметром void*, а другим - типа size_t. Operator must be declared as function Переопределяемая операция была описана с типом, отличным от типа функции. Operator new[] must have an initial parameter of type size_t Операция new может объявляться с произвольным числом параметров, но обязательно должна иметь хотя бы один параметр, в котором будет находиться размер распределяемой памяти. Operator new must return an object of type void* Переопределенная операция С++ operator new была объявлена иначе. Operator new[] must return an object of type void* Переопределенная операция С++ operator new была объявлена иначе. Out of memory Исчерпана общая рабочая память. Повторите компиляцию этого файла на машине с большей доступной памятью. Если у вас и так имеется 640К, следует упростить исходный файл. Out of memory По каким-то причинам утилита TLIB или Borland C++ исчерпали при построении библиотеки доступную память. Во всех конкретных случаях выводятся также детальное сообщение, а "Out of memory" - это общая ситуация нехватки памяти в разных ситуациях. При работе в Windows, чтобы освободить память, закройте одну или более прикладных программ. Если данное сообщение возникает, когда слишком большой становится таблицы идентификаторов, вы должны освободить память. Для командной строки это предполагает удаление резидентных программ или драйверов устройств, использующих память реального режима. В интегрированной среде дополнительную память можно получить, закрыв редакторы. При работе в Windows, чтобы освободить память, закройте одну или более прикладных программ. Out of memory TLINK исчерпал динамически распределяемую память, необходимую для процесса компоновки. Эта общая ошибка возникает во многих ситуациях, когда утилите TLINK не хватает памяти. Обычно это означает, что в компонуемых объектных файлах определено слишком много модулей, внешних идентификаторов, групп или сегментов. Вы можете попробовать уменьшить объем виртуальных дисков и/или активных дисковых буферов. При работе под Windows, чтобы освободить память, закройте одну или более прикладных программ. out of memory creating extended dictionary Библиотекарь исчерпал память при создании расширенного словаря библиотеки. Библиотека будет создана, но не будет иметь расширенного словаря. out of memory reading LE/LIDATA record from object module Библиотекарь пытается прочитать запись данных из объектного модуля, но не может получить достаточно большой блок памяти. Если добавляемый блок содержит большой сегмент или сегменты данных, то возможно добавление этого модуля перед другими модулями позволит решить проблему. Добавив модуль первым, вы получите дополнительную память для записи общедоступных переменных и списка модулей, добавляемых далее. Out of space allocating per module debug struct Библиотекарь исчерпал память выделяя пространство для отладочной информации, связанной с конкретным объектным модулем. Устранение отладочной информации из некоторых добавляемых в библиотеку модулей может устранить проблему. Output device is full Устройство вывода переполнено (обычно нет места на диске). Overlays generated and overlay manager included Это предупреждение выводится, если оверлеи создаются, но идентификатор __OVRTRAP__ не определен ни в одном из объектных модулей или компонуемых библиотек. Этот идентификатор определяется стандартной оверлейной библиотекой OVERLAY.LIB. Overlays only supported in medium, large and huge memory models Оверлеи допустимы только в программах с моделями памяти medium, large и huge). Overloadable operator expected Почти все операции С++ могут быть переопределены. Единственными исключениями являются операции выбора поля (.), точка со звездочкой (.*), двойное двоеточие (::) и условное выражение (?:). Операции препроцессора # и ## не являются операциями языка С или С++ и потому переопределяться не могут. Прочие знаки пунктуации, не входящие в число операций, например, точка с запятой, разумеется, также не могут быть переопределены. Overloaded имя_функции ambiguous in this context Единственный случай, когда имя переопределенной функции может использоваться без фактического вызова, это инициализация или присваивание переменной или параметра соответствующего типа. В данном случае переопределяемое имя функции используется в каком-то другом контексте. Overloaded prefix 'operator операция' used as a postfix operator В последней спецификации С++ теперь можно переопределить префиксную и постфиксную версию операций ++ и --. Чтобы можно было компилировать старый код, когда переопределенной является только префиксная операция, но она используется в постфиксном контексте, Borland C++ использует префиксную операцию и выводит данное предупреждение.
Назад | Содержание | Вперед |
|
CITForum © 1997–2025