Кроме того, обратите внимание на то, что функция прерывания выполняет выход с помощью команды IRET (возврата из прерывания)

Turbo C++ Programer`s guide
Первый символ должен являться буквой или символом подчеркивания Тело функции, представляющее собой коды, выполняемые при вызове функции Выражение-приведения это пустой (null) указатель Е1 является указателем, а Е2 - константой типа пустого указателя Выражение-инремента выполняет приращения одного или нескольких цикловых счетчиков Вызвать конструктор тем же образом, что и обычную функцию, нельзя. Вызов деструктора допустим только с полностью квалифицированным именем Инициализатор конструктора (см. "инициализатор-конструктора" в описании синтаксиса декларатора класса в таблице Или 16). Ноль означает по умолчанию десятичную Мы будем обозначать все семейство математических сопроцессоров 80x87 термином "сопроцессор" В режиме эмуляции 80Х87 циклический переход в регистрах, а также ряд других особенностей 80х87 не поддерживается GrOk No error Нет ошибки Кроме того, обратите внимание на то, что функция прерывания выполняет выход с помощью команды IRET (возврата из прерывания) Как идентифицировать диагностические сообщения Что происходит, когда доступ к компоненту объекта типа объединения происходит при помощи компонента другого типа Печатаемые диагностические сообщения и поведение при завершении функции assert
668870
знаков
13
таблиц
0
изображений

21. Кроме того, обратите внимание на то, что функция прерывания выполняет выход с помощью команды IRET (возврата из прерывания).

Итак, в каких случаях может понадобиться написать собственный обработчик прерываний? Делов том, что так работает большинство резидентных программ. Они инсталлируются какобработчики прерываний. Тем самым, при выполнении некоторого периодического или специального действия (тактовом сигнале часов, нажатии клавиши и т.д.) происходит обращение к соответствующемуобработчику прерывания и соответствующие действия. Затем управление возвращается программе, при выполнении которой встретилось данное прерывание.

Практические примеры программ низкого уровня

Мы уже рассмотрели несколько примеров обращений к функциям низкого уровня из С-программы; рассмотрим еще несколько таких практических примеров. Начнем с обработчика прерывания, который выполняет некоторые безвредные, но ощутимые (в данном случае слышимые) действия: при его вызове раздается звуковой сигнал.

Прежде всего, напишем саму функцию: Она может выглядеть следующим образом:

#include <dos.h>

void interrupt mybeep(unsigned bp, unsigned di, unsigned si, unsigned ds, unsigned es, unsigned dx, unsigned cx, unsigned bx, unsigned ax)

(*

int i, j;

char originalbits, bits;

unsigned char bcount = ax >> 8;

/* прием текущих установок управляющего порта */

bits = originalbits = inportb(0x61);

for (i = 0; i <= bcount; i++) (

/* временное выключение динамика */

outportb(0x61, bits & 0xfc);

for (j = 0; j <= 100; j++)

; /* пустой оператор */

/* теперь динамик на некоторое время включается */

outportb(0x61, bits \! 2);

for (j = 0; j <= 100; j++)

; /* еще один пустой оператор */

)

/* восстановление установок управляющего порта */

outportb(0x61, originalbits);

*)

Затем напишем функцию, которая будет инсталлировать данный обработчик прерываний. Ей передается адрес и номер обработчика (от 0 до 255 или от 0x00 до 0xFF).

void install(void interrupt (*faddr)(), int inum)

(*

setvect(inum, faddr);

*)

И наконец, вызовем для проверки написанную вами сигналящую подпрограмму. Это сделает следующая функция:

void testbeep(unsigned char bcount, int inum)

(*

_AH = bcount;

geninterrupt(inum);

*)

Функция main может иметь вид:

main()

(*

char ch;

install(mybeep,10);

testbeep(3,10);

ch = getch();

*)

Вы можете также сохранить исходный вектор прерывания и восстановить его при выходе из главной программы. Для этого служат функции getvect и setvect.

Глава 7Сообщения об ошибках

Turbo C++ различает две категории ошибок: времени выполнения и времени компиляции. Сообщения об ошибках времени выполнения выдаются непосредственно при их обнаружении. Сообщения об ошибках времени компиляции делятся на три категории: фатальные ошибки, не-фатальные ошибки и предупреждения. Более подробно они описаны, начиная со стр.283 оригинала.

Следующие обобщенные имена и значения используются в перечисленных в данной главе сообщениях (большинство из них понятны и так и в разъяснениях не нуждается). В фактических сообщениях об ошибках вместо обобщенных имен и значений подставляются конкретные.

------------------------------------------------------------

Обобщенное имя Фактическое имя или значение в данном руководствевыводимое на экран

------------------------------------------------------------ аргументАргумент командной строки или иной аргумент классИмя класса

полеСсылка на поле

имя_файлаИмя файла (с расширением или без)

группа Имя группы

идентификаторИдентификатор (имя переменной или другой) языкНазвание языка программирования компонентИмя компонента данных или функции компонента сообщениеСтрока сообщения

модуль Имя модуля

числоФактическое число

опцияОпция командной строки или другая опция параметрИмя параметры

сегментИмя сегмента

спецификаторСпецификатор типа символическое_имяСимволическое имя XXXXh4-значное шестнадцатиричное число,

за которым следует h

Сообщения об ошибках перечислены в алфавитном порядке, по старшинству символов ASCII; обычно первыми идут сообщения, начинающиеся символами (равенство, запятая, фигурная скобка и т.д.). Поскольку сообщения, в которых на первом месте выводится имя, специфическое для данной программы, не могут быть расставлены по алфавиту, то они также находятся в начальной части каждого списка сообщений.

Например, если у вас имеется функция С++ goforit, то фактически вы можете получить сообщение об ошибке

goforit must be declared with no arguments

Для того, чтобы найти описание данного сообщения в этой главе, искать следует сообщение

функция must be declared with no arguments

в начале списка сообщений об ошибках.

Если же некоторая переменная включается в текст сообщения позже (например, "Incorrect command-line argument: аргумент"), то такое сообщение можно найти по алфавиту, в данном случае на букву I.

Сообщения об ошибках времени выполнения

Количество ошибок времени выполнения в Turbo C++ невелико. Эти ошибки могут быть обнаружены в уже откомпилированной и выполняющейся программе. В данном разделе они перечислены в алфавитном порядке и приводятся с объяснениями.

Эти ошибки могут являться следствием случайного затирание памяти программой.

Abnormal program termination

Аварийное завершение программы

Данное сообщение может появляться, если для выполнения программы не может быть выделено достаточного количества памяти. Более подробно оно рассматривается в конце раздела, касающегося ошибок операций с плавающей точкой. Вызов abort также приводит к появлению данного сообщения.

Divide by 0

Деление на ноль

Данное сообщение выдается при целочисленном делении на ноль, например

int n = 0;

n = 2 / n;

Эту ошибку можно отследить при помощи функции signal. В противном случае вызывается abort, и программа завершается.

Floating point error:Divide by 0.

Ошибка операции с плавающей точкой:Деление на 0.

Floating point error:Domain.

Ошибка операции с плавающей точкой:Выход из области определения.

Floating point error:Overflow.

Ошибка операции с плавающей точкой:Переполнение.

Данные фатальные ошибки являются следствием операции с плавающей точкой, для которой результат не определен.

- "Деление на 0" означает, что результат равен в точности +INF или -INF (плюс или минус неопределенность), например для операции 1.0/0.0.

- "Выход из области определения" означает, что результат равен NAN (not a number - не число), например для

0.0/0.0.

- "Переполнение" означает, что результат равен +INF (неопределенность) или -INF при полной потере точности, например в случае присвоения 1e20*1e20 переменной типа double.

Floating point error:Partial loss of precision.

Ошибка операции с плавающей точкой:Частичная потеря точности.

Floating point error:Underflow.

Ошибка операции с плавающей точкой:Отрицательное переполнение.

Эти особые ситуации по умолчанию маскируются, и сообщения об ошибках не выдаются. Отрицательное переполнение преобразуется в ноль,а потери точности игнорируются. Отменить маску можно, вызвав _control87.

Floating polnt error:Stack fault.

Ошибка операции с плавающей точкой:Сбой в стеке.

Это сообщение указывает на выход за пределы стека плавающей точки. В нормальных условиях оно не появляется и поэтому может означать либо то, что ассемблерный код использует слишком много регистров, либо неправильное объявление функции с плавающей точкой.

Этой ошибки можно избежать, маскируя особые ситуации таким образом, чтобы они не появлялись, либо перехватывая их функцией signal. См. подробное описание функций _control87 и signal в Справочнике по библиотеке.

В каждом из приведенных случаев программа печатает сообщение об ошибке и затем вызывает abort, которая в свою очередь выдает сообщение

Abnormal program termination

и вызывает _exit(3). См. подробные описания функций abort и _exit.

Null pointer assignment.

Присвоение пустому указателю

При выходе из программы с моделью памяти small или medium выполняется проверка, чтобы определить, были ли изменены значения двух первых байтов в сегменте данных программы. Эти байты никогда не должны изменяться работающей программой. Если же они были изменены, то выдается сообщение "Null pointer asignment", говорящее о том, что (вероятно) некоторое значение было записано в неинициализированный указатель. Во всех прочих отношениях программа может работать правильно; однако данная ошибка является серьезной ошибкой, и ей следует заняться немедленно. Если вы не сможете исправить неинициализированный указатель, это приведет к непредсказуемому поведению компьютера (вплоть до его "блокирования" в случае моделей памяти large, compact и huge.) Для отслеживания таких ошибок может служить интегрированный отладчик, входящий в среду разработки.

Stack overflow

Переполнение стека

По умолчанию размер стека для программ Turbo C++ равен 4,096 байт. Для большинства программ этого достаточно, однако программы с рекурсивными функциями или большими объемами локальных данных могут переполнить стек. Данное сообщение выдается только в том случае, когда включено средство контроля стека. При получении этого сообщения вы можете перейти к большей модели памяти, увеличить размер стека, либо уменьшить использование стека вашей программой. Информацию о том, как изменить размер стека с помощью глобальной переменной _stklen, см. в Главе 2, "Глобальные переменные" в Справочнике по библиотеке. Для уменьшения количества используемых функцией локальных данных можно поступить так, как показано в приводимом ниже примере. Переменная buffer объявлена как static и потому, в отличие от list, не расходует стек.

void anyfunction( void )

(*

static int buffer[ 2000 ];/*размещается в сегменте данных*/

int list[ 2000 ]; /*размещается в стеке*/

*)

Объявление локальных переменных как static имеет два недостатка.

1. Теперь такая переменная занимает место, отводимое обычно глобальным переменным и куче. (Чтобы заплатить Павлу, приходится грабить Петра). Однако этот недостаток не самый главный.

2. Функция не может более являться реентерабельной. Это означает, что если функция должна вызываться рекурсивно или асинхронно, и при этом важно, чтобы каждый вызов функции работал со своей собственной копией переменной, то такая переменная не может являться статической. Это связано с тем, что при каждом вызове функции данная переменная будет занимать ту же самую область памяти, вместо того, чтобы ей распределялась всякий раз новая. Также возникает проблема с разделением доступа к переменной, если функция содержит вызов самой себя (рекурсивно), либо должна выполняться одновременно сама с собой (асинхронно). Для большинства программ DOS это не проблема. Если вы не пишете рекурсивных функций и не работаете в мультизадачном режиме, то вам не о чем беспокоиться. В противном случае приведенные выше объяснения помогут вам разобраться, что к чему.

Сообщения об ошибках компилятора

Диагностические сообщения компилятора Turbo C++ делятся на три категории: фатальные ошибки, ошибки и предупреждения.

Фатальные ошибки встречаются редко. Некоторые из них обозначают внутреннюю ошибку компилятора. В случае фатальной ошибки компиляция немедленно прекращается. Далее вы должны предпринять соответствующие действия и затем повторить компиляцию.

Ошибки обозначают синтаксические ошибки программы, ошибки доступа к диску или к памяти, а также ошибки командной строки. Компилятор закончит текущую фазу компиляции и остановится. На каждой фазе (препроцессор, лексический анализ, оптимизация и генерация кода) компилятор пытается найти столько фактических ошибок, сколько возможно.

Предупреждения не приводят к остановке работы компилятора. Они лишь указывают на ситуации, которые кажутся компилятору подозрительными, но являются допустимыми с точки зрения языка. Компилятор также выдает предупреждения о наличии в исходных файлах машино-зависимых конструкций.

В сообщении компилятор сначала указывает класс этого сообщения, затем имя исходного файла, далее номер строки, в которой обнаружена ошибка, и наконец, собственно текст сообщения об ошибке.

В приводимых ниже перечнях сообщения об ошибках представлены по классам в алфавитном порядке. Для каждого сообщения приводится возможная причина его появления и рекомендации по устранению ошибки.

Вы должны знать о номерах строк в сообщениях следующее: компилятор генерирует сообщения об ошибках по мере их обнаружения. Поскольку С никак не регламентирует размещение операторов по строкам текста, истинная причина ошибки может находиться несколькими строками выше, чем указанная в сообщении строка. В следующих перечнях сообщений мы отметили те из них, которые часто на самом деле находятся выше, нежели строка, указанная компилятором.

Фатальные ошибки

Bad call of inline function

Неправильный вызов встроенной функции

Вы вызвали встроенную функцию из макро определения, но сделали это неправильно. Встроенная функция в С должна начинаться двумя символами подчеркивания (__).

Irreducible expression tree

Неупрощаемое дерево выражения

Это сообщение указывает на некоторую ошибку компилятора. Выражение в указанной строке исходного файла вызвало условие, когда генератор кода не может выполнить свою работу. Как бы это выражение ни было необходимым, его следует переписать. В случае, если вы получите такое сообщение, уведомьте об этом Borland.

Out of memory

Недостаточно памяти

Исчерпана общая рабочая память. Повторите компиляцию этого файла на машине с большей доступной памятью. Если у вас и так имеется 640К, следует упростить исходный файл.

Register allocation error

Ошибка распределения регистров

Это сообщение указывает на некоторую ошибку компилятора. Выражение в указанной строке исходного файла оказалось настолько сложным, что генератор кода не смог выполнить свою работу. Упростите это выражение. Если это не помогло, постарайтесь обойтись без него. В случае, если вы получите такое сообщение, уведомьте об этом Borland.

Ошибки

конструктор cannot return a value

конструктор не может возвращать значение

Конструктор С++ не может иметь выражения в операторе возврата.

конструктор is not a base class of класс

конструктор не относится к базовому классу класс

Конструктор класса С++ "класс" пытается вызвать конструктор базового класса "конструктор", либо вы пытаетесь изменить права доступа класс::конструктор. Конструктор не относится к базовому классу "класс". Проверьте объявления.

функция1 cannot be distingulshed from функция2

функция1 не отличается от функции2

Списки типов параметров в объявлениях этих двух функций недостаточно отличаются, чтобы эти функции отличались друг от друга. Попытайтесь изменить в объявлении одной из них последовательность или тип параметров.

функция is ambiguous

функция неоднозначна

Данному вызову "функции" соответствует по списку аргументов более одной перегруженной функции (с учетом преобразования аргументов по умолчанию). Используйте явное приведение типов одного или более аргументов для разрешения этой неоднозначности.

функция must be declared with no arguments

функция должна быть объявлена без аргументов

Данная функция-операция С++ была неправильно объявлена с аргументами.

функция must be declared with one argument

функция должна быть объявлена с одним аргументом

Данная функция-операция С++ была неправильно объявлена с более чем одним аргументом

функция must be declared with two arguments

функция должна быть объявлена с двумя аргументами

Данная функция-операция С++ была неправильно объявлена с числом аргументов, отличным от двух.

функция was previously declared without static

функция была ранее объявлена без атрибута static

Здесь функция объявлена как static, тогда как выше она была объявлена как extern (или global). ANSI C не позволяет смешивать эти объявления.

функция was previously declared with the language язык

функция была выше объявлена с модификатором языка "язык"

Функция может иметь только один модификатор языка (cdecl, pascal или interrupt). Данная функция в двух местах была объявлена с двумя разными модификаторами языка.

идентификатор cannot be declared in an anonymous union

идентификатор не может быть объявлен в анонимном объединении

Компилятор обнаружил объявление функции компонентаили статического компонента в анонимном объединении. Такие объединения могут содержать только компоненты данные.

идентификатор cannot be used in a static member function

идентификатор не может использоваться в статической функциикомпоненте

Статическая функция-компонент может использовать только статические компоненты своего класса, хотя и имеет полные права доступа. Данная ошибка является результатом попытки использования компонента, для которого требуется указатель this.

идентификатор is inaccessible because also in класс

идентификатор недоступен поскольку также используется в классе

Недопустимо использовать класс в качестве и прямого, и косвенного базового класса, поскольку поля его автоматически становятся неоднозначными. Попытайтесь сделать базовый класс виртуальным в обоих местах.

идентификатор is not a data member and can't be initlallzed here

идентификатор не является компонентом данных и не может быть здесь инициализирован

В инициализаторах конструктора допускается инициализация только компонентов данных. Это сообщение означает,что список включает в себя статический компонент или функцию-компонент.

идентификатор is not a member of struct

идентификатор не является компонентом структуры

Вы пытаетесь сослатьсяна идентификатор, как на компонент структуры, в то время как он не является компонентом структуры.

Проверьте объявления.

идентификатор is not a parameter

идентификатор не является параметром

В разделе объявления параметров определения функции по образцу старых версий идентификатор объявлен, но не перечислен в списке параметров. Либо уберите объявление, либо добавьте идентификатор в качестве параметра.

идентификатор is not legal here

идентификатор здесь недопустим

Спецификатор типа "идентификатор" здесь недопустим, поскольку он противоречит или дублирует другой спецификатор типа в данном объявлении, либо потому, что "идентификатор" используется в качестве имени typedef, тогда как имени typedef в данном контексте быть не может.

идентификатор is virtual and cannot be explicitly initialized

идентификатор виртуальный и не может быть явно инициализирован

Конструктор класса С++ пытается вызвать "идентификатор" конструктора базового класса, однако этот идентификатор относится к виртуальному базовому классу. Виртуальные базовые классы не могут быть инициализированы явно. Компилятор неявно вызывает конструктор базового класса по умолчанию base::base().

идентификатор must be a member function

идентификатор должен быть функцией-компонентом

Большинство функций-операций С++ может являться компонентами классов или обычными функциями, не входящими в класс, однако некоторые из них обязательно должны быть компонентами класса. Это функции operator =, operator ->, operator() и преобразования типов. Данная функция не является функцией-компонентом, но должна являться таковой.

идентификатор must be a member function or have an argument

of class type

идентификатор должен быть функцией-компонентом или иметь аргумент типа класса

Большинство функций-операций С++ должно иметь неявный или явный аргумент типа класса. Данная функция-операция была объявлена вне класса и не имеет явного аргумента типа класса.

идентификатор must be a previously defined class or struct

идентификатор должен быть ранее объявленным классом или структурой

Вы пытаетесь объявить идентификатор как базовый класс, тогда как он либо не является классом, либо не был еще полностью определен. Исправьте имя или реорганизуйте объявления.

идентификатор must be a previoustly defined enumeration tag

идентификатор должен быть ранее определенным тегом перечислимого типа

Данное объявление пытается обратиться к идентификатору, как к тегу типа enum, тогда как он не был объявлен в качестве такового. Исправьте имя или реорганизуйте объявления.

идентификатор must be a previoustly defined structuretag

идентификатор должен быть ранее определенным тегом структуры

Данное объявление пытается обратиться к идентификатору, как к тегу структуры, тогда как он не был объявлен в качестве такового.

Исправьте имя или реорганизуйте объявления.

идентификатор specifies multiple or duplicate access

идентификатор задает многократный или дублирующийся доступ

Базовый класс должен быть объявлен как public или private, но не то и другое одновременно. Спецификатор доступа не должен задаваться для базового класса более одного раза.

компонент is not accessible

компонент недоступен

Вы пытаетесь сослаться на "компонент" класса С++, который имеетатрибут доступа private илиprotected и недоступен из данной функции. Это иногда случается при попытке вызова доступной перегружаемой функции-компонента (или конструктора), когда заданные при этом аргументы совпадаютс аргументаминедоступной функции. Перед проверкой доступности всегда выполняется проверка разрешения перегрузки. Если проблема именно в этом, то для выбора желаемой доступной функции попытайтесь явно выполнить приведение типа для одного или более параметров.

спецификатор has already been included

спецификатор уже был включен

Данный спецификатор типа встречается в объявлении более одного раза. Удалите или измените один из них

= expected

= ожидается

Ожидалась операция присвоения для инициализации переменной.

, expected

, ожидается

В списке объявлений, инициализации или параметров ожидается запятая.

(* epected

(* ожидается

В качестве начала блока или инициализации ожидается левая фигурная скобка.

( expected

( ожидается

Перед списком параметров ожидается левая круглая скобка.

*) expected

*) ожидается

В конце блока или инициализации ожидается правая фигурная скобка.

) expected

) ожидается

В конце списка параметров ожидается правая круглая скобка.

: expected alter private/protected/publlc

: ожидается после private/protected/public

При использовании резервированных слов

private/protected/public для того, чтобы начать соответствующий раздел класса С++, за ними должно следовать двоеточие.

::requires a preceding identifier in this context

в данном контексте перед :: требуется идентификатор

В С++ в объявлении встретилось двойное двоеточие без предшествующего квалифицирующего имени класса. Неквалифицированное двойное двоеточие может использоваться только в выражениях для обозначения глобального контекста, а не в объявлениях.

.* operands do not match

операнды .* не соответствуют

Вы не объявили операнд правой части операции С++ (.*) как указатель на компонент класса, заданный левым операндом.

# operator not followed by macro argument name

за операцией # не следует имя аргумента макроса

В макро определении символ # может быть использован для обозначения преобразования аргумента макроса в строку. За # должно следовать имя аргумента макроса.

Access can only be changed to public or procted

Тип доступа может быть изменен только на public или protected

Производный класс С++ может модифицировать права доступа членабазового класса, но только на public или protected.

Компонент базового класса нельзя сделать private.

Access declarations cannot grant or reduce access

Объявления доступа не могут повысить или понизить права доступа

Производный класс С++ может модифицировать права доступа члена базового класса, но только путем восстановления прав базового класса. Он не может повысить или понизить права доступа.

Access specifier спецификатор found in a union

Спецификатор доступа встретился в объединении

Спецификаторы доступа С++ (public, private или

protected) не могут находиться в объединениях.

Ambiquity between функция1 and функция2

Неоднозначность между функцией1 и функцией2

С переданными параметрами могут использоваться обе названные перегруженные функции. Такая неоднозначность недопустима.

Ambiquous conversion functions: тип1 and тип2

Неоднозначность функций преобразования: тип1 и тип2

Компилятор нашел более одного способа преобразования данного типа в желаемый. Такая неоднозначность недопустима.

Array bounds missing ]

В задании границ массива отсутствует ]

В исходном файле в объявлении границ массива отсутствует закрывающая квадратная скобка.

Array must have at least one element

Массив должен иметь хотя бы один элемент

ANSI C и С++ требуют, чтобы массив определялся хотя бы с одним элементом (объекты нулевого размера недопустимы). Существует старый программистский прием, состоящий в том, чтобы объявить элемент структуры типа массива нулевого размера, а уже затем при помощи malloc распределить фактически требуемую память. Этот прием по-прежнему можно использовать, но теперь вы обязаны объявлять массив как имеющий (как минимум) один элемент. Разумеется, объявления (в противоположность определениям) массивов неизвестного размера допустимы.

Например,

char ray[] /* определение массива неизвестного размера недопустимо */

char ray[0] /* определение массива нулевого размера недопустимо */

Array of references is not allowed

Массив ссылок недопустим

Массив ссылок недопустим, поскольку указатели на ссылки недопустимы, а имена массивов встраиваются в указатели.

Array size too lange

Размер массива слишком велик

Объявленный массив превышает 64К.

Assembler statement too long

Слишком длинный ассемблерный оператор

Операторы встроенного ассемблирования не могут превышать по длине 480 байтов.

Attempting to return a reference to local name идентификатор Попытка вернуть ссылку на локальное имя идентификатор

Данная функция С++ возвращает значение типа ссылки, и вы пытаетесь вернуть ссылку на локальную (динамическую) переменную. Это недопустимо, поскольку такая переменная при выходе из функции разрушается. Вы можете вернуть ссылку на любую статическую или глобальную переменную, либо изменить функцию таким образом, чтобы возвращалась не ссылка, а само значение.

Bad file name format in inciude directive

Неправильный формат имени файла в директиве включения

Имена включаемых файлов должны заключаться в кавычки ("имя_файла.h") или в угловые скобки (<имя_файла.h>). Перед именем файла отсутствовала открывающая кавычка или угловая скобка. Если использовался макрос, то результирующий текст расширения неверен; т.е., он не взят в кавычки.

Bad ifdef directive synfax

Неверный синтаксис директивы ifdef

Директива ifdef должна содержать в качестве тела директивы единственный идентификатор (и ничего более).

Bad ifndef directive synfax

Неверный синтаксис директивы ifndef

Директива ifndef должна содержать в качестве тела директивы единственный идентификатор (и ничего более).

Bad return type for a type conversion operator

Неверный тип возврата в операции преобразования типа

Данная функция-компонент преобразования типа С++задаеттип возврата, отличный от типасамой функции. Объявление функции преобразования operator T может не задавать типа возврата вообще.

Bad syntax for pure function definition

Неверный синтаксис определения "чистой" функции

Чистые виртуальные функции задаются добавлением в определение символов "=0". Вы написали что-либо похожее, но не совпадающее с требуемым в точности.

Bad undef directive syntax

Неверный синтаксис директивы undef

Директива #undef должна содержать в качестве тела директивы единственный идентификатор (и ничего более).

Base class класс is included more than once

Базовый класс включен более одного раза

Класс С++ может быть производным от любого числа базовых классов, но непосредственно от одного и того же класса он может быть производным только один раз.

Base class класс is initialized more than once

Базовый класс инициализируется более одного раза

В конструкторе класса С++ список инициализации, следующий за заголовком конструктора, включает указанный базовый класс более одного раза.

Base class cannot be declared protected

Базовый класс не может быть объявлен как protected

Базовый класс С++ может быть public или private, но не protected.

Bit field cannot be static

Битовое поле не может быть static

Только обычные данные-компоненты классов С++могут быть объявлены как static, но не битовые поля.

Bit fields must be signed or unsigned int

Битовые поля должны быть signed или unsigned int

Битовое поле должно быть объявлено с интегральным типом signed или unsigned. В ANSI C битовые поля могут быть только signed или unsigned int (но не char или long).

Bit fields must contain at least one bit

Битовые поля должны содержать как минимум один бит

Вы не можете объявить именованное битовое поле длиной 0 (или менее 0) битов. Можно объявить битовое поле нулевой длины без имени, по соглашению используемое для принудительной установки выравнивания битового поля по границе байта (или по границе слова, если выбрана опция выравнивания -a).

Bit field too large

Битовое поле слишком велико

Данная ошибка возникает при попытке определения битового поля длиной свыше 16 битов.

Body already defined for this function

Тело этой функции уже определено

Тело функции с этим же именем и типом уже встречалось выше. Тело функции может входить в программу только один раз.

Call of non-function

Вызов не-функции

Вызываемое имя не было объявлено как функция. Эта ошибка обычно возникает при неправильном объявлении или опечатке в имени функции.

Cannot assign идентификатор1 to идентификатор2

Присвоение идентификатора1 идентификатору2 невозможно

Обе стороны операции присвоения (=) (или составной операции присвоения типа +=) должны быть совместимыми и не должны являться массивами. Правая сторона данной операции присвоения имеет тип идентификатор1 и не может быть присвоена объекту слева, имеющему тип идентификатор2.

Cannot call 'main' from within the program

Вызвать 'main' из программы невозможно

С++ не позволяет рекурсивные вызовы 'main'.

Cannot cast from идентификатор1 to идентификатор2

Приведение между идентификатор1 и идентификатор2 невозможно

Приведение типа идентификатор1 к типу идентификатор2 здесь запрещено. В С указатель может быть приведен к интегральному типу или к другому типу указателя. Интегральный тип может быть приведен к любому интегральному типу, типу с плавающей точкой и указателю. Тип с плавающей точкой может быть приведен к интегральному или другому типу с плавающей точкой. Структуры и массивы не позволяют выполнение для них приведений типа. Также невозможны приведения для типа void.

В С++ проверяется наличие преобразований и конструкторов, определяемых пользователем, и в случае их отсутствияприменяются правила приоритета (за исключением указателей на компоненты класса). Из интегральных типов только для константы со значением ноль допускается приведение к типу указателя компонента. Указатель компонента допускает приведение к интегральному типуили аналогичному указателю компонента. Последний будет указывать на компонент данных, если на него был установлен исходный указатель, и на компонент-функцию, еслина нее был установлен исходный; квалифицирующий класс типа,к которому выполняется приведение, должен быть тем же, что и базовый класс оригинала.

Cannot create a varlable for abstract class класс

Создание переменной для абстрактного класса "класс" невозможно

Абстрактные классы - с чистыми виртуальными функциями - не могут использоваться непосредственно, допускается лишь создание производных от них классов.

Cannot define a pointer or reference to a reference

Определение указателя или ссылки на ссылку невозможно

Иметь указатель на ссылку или ссылку на ссылку нельзя.

Cannot find класс::класс (класс&) to copy a vector

Не найден класс::класс (класс&) для копирования вектора

Если класс С++ класс1 содержит вектор (массив) класса класс2 и вы хотите сконструировать объект типа класс1 из другого объекта типа класс1, то должен быть конструктор класс2::класс2(класс2&) такой, чтобы могли быть сконструированы элементы вектора. Данный конструктор принимает только один параметр (являющийся ссылкой на его класс) и называется конструктором ссылки.

Обычно компилятор создает конструктор ссылки автоматически. Однако, если вы определили конструктор для класса класс2, имеющего параметр типа класс2. и дополнительные параметры со значениями по умолчанию, то данный конструктор ссылки не может существовать и не может быть создан компилятором. (Вследствие того, что класс2::класс2(класс2&) и класс2::класс2(класс2&, int = 1) не различаются компилятором). Вы обязаны переопределить данный конструктор таким образом, чтобы не все параметры имели значения по умолчанию. Затем вы можете определить конструктор ссылки или позволить компилятору создать собственный.

Cannot find идентификатор::идентификатор() to

initialize a vector

Не найден идентификатор::идентификатор() для инициализации вектора

Если класс С++ класс1 содержит вектор (массив) класса класс2 и вы желаете сконструировать объект типа класс1, но при этом не из другого объекта типа класс1, то для конструирования элементов вектора должен быть использован конструктор класс2::класс2(). Такой конструктор без параметров называется конструктором по умолчанию. Если вы не определили для класса2 никакого конструктора, компилятор создаст конструктор по умолчанию автоматически; в противном случае будет использован ваш конструктор.

Cannot find класс::класс() to initialize base class

Не найден класс::класс для инициализации базового класса

При конструировании производного класса С++ класс2 сначала должен быть сконструирован каждый базовый класс класс1. Если конструктор для класса2 не задает конструктор для класса1 (как часть заголовка класса2), то для базового класса должен быть задан конструктор класс1::класс1(). Такой конструктор без параметров называется конструктором по умолчанию. Если вы не определили для класса1 никакого конструктора, компилятор создаст конструктор по умолчанию автоматически; в противном случае будет использован ваш конструктор.

Cannot find класс::класс() to initialize field идентификатор

Не найден класс::класс() для инициализации поля идентификатор

Если класс С++ класс1 содержит компонент класса класс2 и вы желаете сконструировать объект типа класс1, но при этом не из другого объекта типа класс1, то для конструирования этого компонента должен быть использован конструктор класс2::класс2(). Такойконструктор без параметров называется конструктором по умолчанию. Если вы не определили для класса2 никакого конструктора,компилятор создаст конструктор по умолчанию автоматически; в противном случае будет использованваш конструктор.

Cannot find класс::operator=(класс&) to copy a vector

Не найден класс::operator=(класс&) для копирования вектора

Если класс С++ класс1 содержит вектор (массив) класса класс2 и вы желаете скопировать класс типа класс1, то должна использоваться операция присвоения класс2::operator=(класс2&), позволяющая копирование элементов вектора. Обычно компилятор вставляет такую операцию автоматически. Однако, если вы определили operator= для класса2, но эта операция не принимает параметр класс2&, то компилятор не будет генерировать операцию автоматически - вы должны написать свою.

Cannot have a near membar in a far class

Компонент near в классе far недопустим

Все компоненты класса С++ far должны быть far. Данный компонент должен принадлежать классу, объявленному (или имеющему по умолчанию) атрибут near.

Cannot initialize a fieid

Инициализация поля невозможна

Отдельные поля структур, объединений и классов С++ могут не иметь инициализаторов. Структура или объединение могут быть инициализированы как единое целое при помощи инициализаторов в фигурных скобках. Класс С++ может быть инициализирован только при помощи конструктора.

Cannot initialize тип1 with тип2

Тип1 не может быть инициализирован типом2

Вы пытаетесь инициализировать объект типа тип1 значением типа тип2, что недопустимо. Правила инициализации те же, что и для присвоения.

Cannot modify a const object

Модификация объекта - константы невозможна

Недопустимая операция с объектом, объявленным константой, например, попытка присвоения такому объекту.

Cannot overioad 'main'

Перегрузка 'main' невозможна

main - это единственная функция, которая не может быть перегружена.

Cannot specify base classes except when defining the class Задавать базовые классы допустимо только при определе-

нии класса

При задании класса С++ базовые классы, производным от которых является данный класс, могут задаваться только в точке определения класса. При объявлении тега класса, например class c; задавать базовые классы недопустимо.

Case outside of switch

Оператор case вне оператора switch

Компилятор встретил оператор case вне оператора switch. Это часто случается при несоответствии числа правых и левых фигурных скобок.

Case statement missing :

В операторе case отсутствует :

Оператор case должен содержать выражение типа константы, за которым следует двоеточие. Либо в выражении оператора case отсутствует двоеточие, либо перед двоеточием находится лишнее символическое имя.

Character constant too long

Слишком длинная символьная константа

Символьные константы могут иметь длину только в один или два символа.

Class класс has a constructor and cannot be hidden

Класс имеет конструктор и не может быть скрытым

С имеет разные пространства имен для тегов структур и обычных имен, также как и С++. Это распространяется и на классы с конструкторами, поскольку объявления конструкторов похожи на объявления функций, и возможность их перепутать может привести к аварийному завершению.

Classes cannot be initialized with (**)

Классы не могут быть инициализированы при помощи (**)

Обычные структуры С могут инициализироваться набором значений в фигурных скобках. Классы С++ могут быть инициализированы только конструкторами, если класс имеет конструкторы, компоненты private, функции или базовые классы, являющиеся виртуальными.

Class member компонент declared outside its class Компонент класса объявлен вне своего класса

Функции компоненты класса С++могут быть объявлены только внутри объявления класса. В отличие от функций, не являющихся компонентами класса,они не могут иметь несколько объявлений или быть объявлены в других местах.

Compound statement missing *)

В составном операторе отсутствует *)

Компилятор дошел до конца исходного файла, но не обнаружил закрывающей фигурной скобки. Это обычно бывает при несовпадающем количестве правых и левых скобок.

Conflicting type modifiers

Противоречащие друг другу модификаторы типа

Это случается, когда в объявлении встречается, например, два ключевых слова - far и near, относящихся к одному и тому же указателю. Одному указателю может соответствовать только один модификатор адресации, а функция может иметь только один модификатор языка (cdecl, pascal или interrupt).

Constant expression required

Требуется выражение типа константы

Массивы должны объявляться с заданным константой выражением. Данная ошибка обычно бывает вызвана опечаткой в константе в #define.

Constructor cannot have a return type specification

Конструктор не может иметь спецификации типа возврата

Конструкторы С++ имеют неявный тип возврата, используемый компилятором, но вы не можете объявить для них тип возврата или возвращаемое значение.

Conversion of near pointer not allowed

Преобразование ближнего указателя недопустимо

Ближний указатель не может быть преобразован в дальний при вычислении выражения, если программа в текущий момент не выполняется. Причина этого состоит в том, что для преобразования требуется знать текущее значение DS программы пользователя, которое в данный момент просто не существует.

Could not find a match for аргумент(ы)

Не найдено соответствие аргументу (аргументам)

Не найдена функция С++ с параметрами, соответствующими заданным аргументам.

Could not find file имя_файла

Компилятор не может найти файл, заданный в командной строке.

Declaration does not specify a tag or an identifier

В объявлении не указан тег или идентификатор

Данное объявление ничего не объявляет. Это может быть структура или объединение без тега или переменная в объявлении. С++ требует, чтобы что-то было объявлено.

Declaration is not allowed here

Объявление здесь недопустимо

Объявления не могут использоваться в управляющих операторах для операторов while, for, do. if или switch.

Declaration missing ;

В объявлении отсутствует ;

В исходном файле содержится объявление поля структуры или объединения, в котором отсутствует точка с запятой (;).

Declaration syntax error

Синтаксическая ошибка в объявлении

Исходный файл содержит объявление, в котором отсутствует некоторый символ имя или наоборот имеются лишние.

Declaration terminated incorrectiy

Неправильное окончание объявления

Объявление содержит лишний илиневерный конечный символ, например, точка с запятой,помещенная после тела функции. Эту ошибку также дает функция-компонент С++, объявленная в классе с точкой с запятой между заголовком и открывающей левой фигурной скобкой.

Declaration was expected

Ожидается объявление

Ожидалось, но не найдено объявление. Это обычно бывает при отсутствии разделителя, например, запятой, точки с запятой, правой круглой скобки или правой квадратной скобки.

Declare operator delete (void*) or (void*,size_t)

Операция delete объявляется (void*) или (void*,size_t)

Операция delete объявляется с одним параметром void*, либо с двумя, где вторым является size_t. При использовании второй версии она будет использована с большим приоритетом, нежели первая. Глобальная операция delete всегда объявляется с двумя параметрами, поэтому будьте осторожны при переопределении этого объявления.

Default outside of swich

Оператор default вне оператора switch

Компилятор встретил оператор default вне оператора switch. Это чаще всего бывает при несовпадении числа правых и левых фигурных скобок.

Default value missing

Отсутствует значение по умолчанию

Если в функции С++ объявляется параметр со значением по умолчанию, все последующие параметры также должны иметь умолчания. В данном объявлении за параметром со значением по умолчанию следует параметр без умолчания.

Define directive needs an identifier директиве define необходим идентификатор

Первый не-пробельный символ после #define должен являться идентификатором. Компилятор встретил на этом месте какие-либо другие символы.

Destructor cannot have a return type specification

Деструктор не может иметь спецификации типа возврата

Деструкторы С++ не имеют типа возврата, и вы не можете объявить тип или значение возврата.

Destructor for класс is not accessibie

Деструктор для класса недоступен

Деструктор для данного класса является protected или private и недоступен из данной точки для разрушения класса. Если деструктор класса является private, класс не может быть разрушен и потому не может никогда быть использован. Это наверняка ошибка. Деструктор protected позволяет доступ только из производных классов. Это полезно для того, чтобы предотвратить создание базовых классов, обеспечив создание из них производных классов.

Destructor name must match the class name

Имя деструктора должно соответствовать имени класса

В классах С++ объявление деструктора класса вводится символом тильда. Имя деструктора должно совпадать с именем класса. В вашем исходном файле тильда предшествует какому-то другому имени.

Division by zero

Деление на ноль

В исходном файле встретилось выражение типа константы, представляющее собой нулевой делитель.

do statement must have while

оператор do должен иметь while

В исходном файле встретился оператор do без соответствующего ограничивающего ключевого слова while.

do-whlle statement missing (

В операторе do-while отсутствует (

В операторе do компилятор не нашел левой круглой скобки после ключевого слова while.

do-whlle statement missing )

В операторе do-while отсутствует )

В операторе do компилятор не нашел правой круглой скобки после условного выражения.

do-whlle statement missing ;

В операторе do-while отсутствует ;

В условном выражении оператора do компилятор не нашел точки с запятой после правой круглой скобки.

Dulicate case

Повторение case

Каждое ключевое слово case оператора switch должно иметь уникальное значение выражения типа константы.

Enum syntax error

Синтаксическая ошибка в enum

Объявление enum не содержит правильно оформленного списка идентификаторов.

Error directive: сообщение

Директива error: сообщение

Данное сообщение появляется при обработке директивы #error из исходного файла. Текст этой директивы выводится в "сообщении".

Error writing output file

Ошибка при записи выходного файла

Ошибка DOS при попытке Turbo C++ вывести .OBJ, .EXE или временный файл. Проверьте опцию командной строки -n или установку меню Options \! Directiries \! Output directory интегрированной среды, правильно ли задана директория для вывода. Также убедитесь, что на диске достаточно места.

Expression expected

Ожидается выражение

Здесь ожидалось выражение, а текущий символ не может начинать выражение. Это сообщение может выдаваться, когда ожидается управляющее выражение в предложении if или while, либо при инициализации переменной. Сообщение часто появляется в результате случайно вставленного или удаленного из исходного файла символа.

Expression is too complicated

Слишком сложное выражение

Компилятор может обрабатывать очень сложные выражения, однако некоторые выражения с сотнями компонентов могут оказаться слишком сложными. Такие выражения следует разбивать на две или более частей.

Expression of arithmetic type expected

Ожидается выражение арифметического типа

Унарные операции плюс (+) и минус (-) требуют выражений арифметического типа - допустимыми являются только типы char, short, int long, enum, float, double и long double.

Expression of integral type expected

Ожидается выражение интегрального типа

Операция дополнения (тильда ) требует выражения интегрального типа - допустимыми являются только типы char, short, int, long или enum.

Expression of scalar type expected

Ожидается выражение скалярного типа

Операции "не" (!), инкремента (++) и декремента (--) требуют выражений скалярного типа - допустимыми являются только типы char, short, int, long, enum, float, double, long double и типы указателей.

Expression syntax

Синтаксис выражения

Это обобщенное сообщение об ошибке, выдаваемое, когда компилятор при лексическом анализе выражения встречает какую -либо серьезную ошибку. Наиболее часто она встречается, если подряд встречается две операции, либо при отсутствии или несоответствии числа круглых скобок, либо при отсутствии точки с запятой в предыдущем выражении.

Expression type does not match the return type

Тип выражения не соответствует типу возврата

Тип выражения return не может быть преобразован к типу возврата функции.

extern variable cannot be initialized

Переменная extern не может быть инициализирована

Класс памяти extern применительно к переменной означает, что переменная здесь объявляется, но не определяется - распределение памяти для нее не происходит. Следовательно, инициализация переменной в объявлении невозможно.

Extra parameter in call

Лишние параметры в вызове

Вызов функции через указатель, определенный в прототипе, содержит слишком много аргументов.

Extra parameter in call to функция

Лишние параметры в вызове функции

Вызов названной функции (которая была определена с прототипом) содержит слишком много аргументов.

Field поле cannot be used without an object

Поле не может быть использовано без объекта

Это означает, что пользователь написал класс::поле, где поле является обычным (не-статическим) компонентом, ичто класс, связанный с этим полем, отсутствует. Например, можно написать объект.класс::поле, но нельзя: класс::поле.

Field поле is ambiguous in class

Неоднозначно задан класс поля

Вы должны квалифицировать ссылку на поле соответствующим именем базового класса. В классе С++ "класс" поле "поле" могло иметься в нескольких базовых классах и не было квалифицировано конкретным классом. Это могло произойти только при множественном наследовании, когда имя поля в каждом базовом классе не скрыто тем же именем поля в производном классе по тому же пути. Правила языка С++ требуют выполнение данной проверки неоднозначности до проверки прав доступа (private, protected, public). Следовательно, возможно получение данного сообщения даже при том, что доступ возможен только к одному полю (или вообще ни к одному не возможен).

Field identifier expected

Ожидается идентификатор поля

Ожидалось, но не найдено имя поля структуры или класса С++. Справа от операции (.) или (->) должно находиться имя поля структуры или класса, указанных слева от операции.

File must contaln at least one external declaration

Файл должен содержать хотя бы одно объявление external

Данная единица компиляции было логически пустой и не содержала никаких объявлений. ANSI C и С++ требуют, чтобы в единице компиляции находились какие-нибудь переменные.

File name too long

Слишком длинное имя файла

Имя файла в директиве #include было слишком длинным для обработки его компилятором. Имена файлов в DOS не могут быть длиннее чем 79 символов.

For statement missing (

В операторе for отсутствует (

В операторе for компилятор не нашел левой круглой скобки после ключевого слова for.

For statement missing )

В операторе for отсутствует )

В операторе for компилятор не нашел правой круглой скобки после управляющего выражения.

For statement missing ;

В операторе for отсутствует ;

В операторе for компилятор не нашел точки с запятой после одного из выражений.

Found : instead of ::

: вместо ::

Вы использовали двоеточие (:) вместо двойного двоеточия (::) в качестве разделителя квалификатора класса С++ и поля в объявлении или в выражении.

Friend declarations need a function signature

Объявления friend требуют точного указания функции

При объявлении функции friend вы должны задать типы параметров таким образом, чтобы из всех перегруженных функций могла быть выбрана верная.

Friends must be functions or classes, not fields

Друзья должны быть функциями или классами, но не полями

Друг (friend) класса С++ должен быть функцией или другим классом; поле не может быть другом.

Function call missing )

В вызове функции отсутствует )

Список аргументов при вызове функции содержит какую-то синтаксическую ошибку, например, отсутствует закрывающая правая скобка.

Function calls not supported

Вызовы функции не поддерживаются

При вычислении выражения интегрированным отладчиком вызовы функций (включая функции неявного преобразования, конструкторы, деструкторы, перегруженные операции и встраиваемые функции) не поддерживается.

Function defined inline after use as extern

Функция определена как встраиваемая после объявления extern

Функцию нельзя определить как встраиваемую (inline) после того, как она была уже была использована. Или переставьте определение inline выше в тексте, или удалите его совсем.

Function definition cannot be a typedef'ed declaration

Определение функции не может быть объявлением typedef

Объявления указателей становятся более читаемыми при использовании typedef. Однако, в С++ такие typedef не могут быть использованы для определения функций.

Например, тип F - это функция без параметров, возвращающая int:

typedef int F(void);

Определение g в качестве такой функции недопустимо:

F g (* /* ... */ *)

Однако можно определить g как функцию, возвращающую указатель на тип F.

F *g(...) (* /* ... */ *)

Function функция cannot be static

Функция не может быть статической

Только обычные функции-компоненты и операции new и delete могут быть объявлены static. Конструкторы, деструкторы и прочие операции не могут быть статическими.

Function cannot return arrays or functions

Функции не могут возвращать массивы или функции

Функция объявлена как возвращающая функцию или массив, вместо указателя функции или элемента массива.

Function should return a value

Функция должна возвращать значение

Данная функция была объявлена (возможно, неявно) как возвращающая значение. Оператор return не содержит значения возврата или найден конец функции, а оператор возврата не встретился. Либо укажите значение возврата, либо измените объявление функции на void.

Functions may not be part of a struct or union

Функции не могут быть частью структуры или объединения

Данное поле структуры или объединения С было объявлено с типом функции, а не указателя функции. Функции в качестве полей разрешены только в С++.

Global anonimous union not static

Глобальное анонимное объединение не static

В С++ глобальное анонимное объединение на уровне файла должно быть static.

Goto statement missing label

Отсутствует метка в операторе goto

За ключевым словом goto должен следовать идентификатор.

Group overflowed maximum size: имя

Группа превысила максимальный размер: имя

Общий размер сегментов в группе (например, в DGROUP) превысил 64К.

Identifier идентификатор cannot have a type qualifier

Идентификатор идентификатор не может иметь квалификатор типа

Квалификатор С++ класс::идентификатор здесьнеприменим. Квалификатор не разрешен для имен typedef, объявлений функций(за исключением определения на уровне файла) или локальных переменных и параметров функций, либо для компонентов класса, заисключением использования как квалификатора собственного имени класса (избыточно, но допустимо).

Identifier expected

Ожидается идентификатор

Здесь ожидался идентификатор, но не был найден. В С это может случиться в списке параметров старого заголовка функции, после резервируемых слов struct или union при отсутствии фигурных скобок, а также при отсутствии имени поля структуры или объединения (за исключением битовых полей нулевой длины). В С++ идентификатор также ожидается в списке базовых классов, производным от которых является данный, после двойного двоеточия (::) и после резервируемого слова operator при отсутствии символа операции.

If statement missing (

В операторе if отсутствует (

В операторе if компилятор не нашел левой круглой скобки после ключевого слова if.

If statement missing )

В операторе if отсутствует )

В операторе if компилятор не нашел правой круглой скобки после выражения проверки.

Illegal character символ (0xзначение)

Недопустимый символ символ (0хзначение)

Компилятор встретил в исходном файле недопустимый символ. Выводится также шестнадцатиричное значение этого символа. Это сообщение может выдаваться вследствие лишних параметров, переданных макросу функции.

Illegal initialization

Недопустимая инициализация

Инициализация может выполняться либо выражением типа константы, либо адресом глобальной extern или static переменной плюс или минус константа.

Illegal octal digit

Недопустимая восьмеричная цифра

Компилятор встретил восьмеричную константу с недопустимой в восьмеричных числах цифрой (8 или 9).

Illegal parameter to __emit__

Недопустимый параметр __emit__

Существуют некоторые ограничения на помещение литеральных значений непосредственно в код. Например, вы не можете передать локальную переменную как параметр в __emit__. Объяснения см. в описании функции __emit__.

Illegal pointer substraction

Недопустимое вычитание указателя

Выдается при попытке вычитания указателя из не-указателя.

Illegal structure operation

Недопустимая операция со структурой

Структуры могут использоваться только в операциях точки (.), адреса (&) или присвоения (=), либо передаваться в функции и из функций в качестве параметров. Компилятор встретил структуру, используемую с какой-либо другой операцией.

Illegal to take address of bit field

Недопустимо брать адрес битового поля

Недопустимо брать адрес битового поля, хотя брать адрес любых других полей можно.

Illegal use of floating point

Недопустимое использование плавающей точки

Операнды с плавающей точкой недопустимы в операциях сдвига, поразрядных булевых операциях, условных операциях (? :), обращения по ссылке (*) и некоторых других операциях. Компилятор обнаружит число с плавающей точкой в качестве операнда одной из этих операций.

Illegal use of pointer

Недопустимое использование указателя

Указатели могут использоваться операциями сложения, вычитания, присвоения, обращения по ссылке (*) и стрелки (->). В исходном файле обнаружен указатель с какой-либо другой операцией.

Improper use of a typedef идентификатор

Неправильное использования typedef идентификатор

В исходном файле символическое имя typedef встретилось в выражении на месте переменной. Проверьте объявление этого имени и возможные опечатки.

Improper use of a typedef symbol

Неправильное использования символического имени typedef

В исходном файле символическое имя typedef встретилось в выражении на месте переменной. Проверьте объявление этого имени и возможные опечатки.

Incompatible type conversion

Несовместимое преобразование типа

Требуемое приведение типа невозможно.

Incorrect command-line option: опция

Неправильная опция командной строки: опция

Компилятор не распознает параметр командной строки как допустимую опцию.

Incorrect configuration file option: опция

Неправильная опция файла конфигурации: опция

Компилятор не распознает параметр файла конфигурации как допустимую опцию; проверьте наличие ведущего дефиса (-).

Incorrect number format

Неправильный формат числа

Компилятор встретил в шестнадцатиричном числе десятичную точку.

Incorrect use of default

Неправильное использование слова default

Компилятор не нашел после ключевого слова default двоеточия.

Inline assembly not allowed in an inline function

Встроенное ассемблирование во встраиваемой функции запрещено

Компилятор не может обрабатывать операторы встроенного ассемблирования внутри встраиваемых (inline) функций С++. Ассемблерные операторы могут быть оформлены в макрос, либо вы можете убрать класс памяти inline, или можно убрать встроенные ассемблерные коды.

Invalid indirection

Недопустимое обращение по ссылке

Операция обращения по ссылке (*) требует в качестве операнда не-пустого (не void) указателя.

Invalid macro argument separator

Недопустимый разделитель аргументов макроса

В определении макроса аргументы должны разделяться запятыми. Компилятор встретил после последнего имени аргумента другой символ разделителя.

Invalid point addition

Недопустимое сложение указателя

В исходном файле встретилась попытка сложения двух указателей.

Invalid use of dot

Недопустимо использование точки

За операцией "точка" (.) должен непосредственно следовать операнд.

Items of type тип need constructors and can't be passed with ... Элементы типа тип требуют конструкторов и не могут быть переданы с ...

Недопустимо передавать объект с типом, для которого необходим конструктор, в переменном списке аргументов (задаваемом с ...)

Left side must be a structure

Левая часть должна быть структурой

Левая часть операции "точка" (.) (или операции С++ "точка со звездочкой") должна иметь тип структуры. В данном случае это не так.

Linkage specification not allowed

Спецификация компоновки не разрешается

Спецификации типа компоновки, например extern "C", допустимы только на уровне файла. Перенесите данное объявление функции на уровень файла.

Lvalue required

Требуется именующее значение

Левая часть операции присвоения должна являться адресуемым выражением. Сюда входят числовые переменные или указатели-переменные, ссылки на поля структур, либо обращение по ссылке через указатель, либо элемент массива, заданный индексом.

Macro argument syntax error

Синтаксическая ошибка в аргументе макроса

Аргумент в определении макроса должен являться идентификатором. Компилятор встретил некоторый символ, который не может являться частью идентификатора, там, где ожидался аргумент.

Macro expansion too long

Слишком длинное макрорасширение

Размер макрорасширения не может превышать 4,096 символов.

main must have a return type of int

main должна иметь тип возврата int

К функции main предъявляются специальные требования; одно из них состоит в том, что она не может иметь тип возврата иной, нежели int.

May compile only one file when an output file name is given При заданном имени выходного файла возможна компиляция

только одного файла

Вы задали опцию командной строки -о, которая позволяет только одно имя выходного файла. Первый файл компилируется, а остальные файлы игнорируются.

Member компонент initialized more than once

Компонент инициализируется более одного раза

В конструкторе класса С++ список инициализации, следующий за заголовком конструктора, включает одно и то же поле более одного раза.

Member functions can only have static storage class

Функции-компоненты могут иметь только класс памяти static

Единственным классом памяти, допустимым для функции-компонента, является static.

Misplaced break

Неправильно расположенный break

Компилятор обнаружил оператор break вне конструкции оператора switch или цикла.

Misplaced continue

Неправильно расположенный continue

Компилятор обнаружил оператор continue вне конструкции цикла.

Misplaced decimal point

Неправильно расположенная десятичная точка

Компилятор обнаружил десятичную точку в экспоненте константы с плавающей точкой.

Misplaced elif directive

Неправильно расположенная директива elif

Компилятор обнаружил директиву #elif без соответствующей ей директивы #if, #ifdef или #ifndef.

Misplaced else

Неправильно расположенный else

Компилятор обнаружил оператор else без соответствующего ему оператора if. Это сообщение может быть вызвано как лишним оператором else, так и лишней точкой с запятой, отсутствием фигурной скобкой, либо некоторой синтаксической ошибкой в предыдущем операторе if.

Misplaced else directive

Неправильно расположенная директива else

Компилятор встретил директиву #else без соответствующей ей директивы #if, #ifdef или #ifndef.

Misplaced endif directive

Неправильно расположенная директива endif

Компилятор встретил директиву #endif без соответствующей ей директивы #if, #ifdef или #ifndef.

Multiple base classes require explicit class names

Множественные базовые классы требуют явных имен классов

В конструкторе класса С++ каждый вызов конструктора базового класса в заголовке конструктора должен в случае, если имеется более одного непосредственного базового класса, включать имя базового класса.

Multiple declaration for идентификатор

Множественное объявление идентификатора

Идентификатор недопустимо объявлен более одного раза. Это может произойти в случае противоречивых объявлений, например int a; double a;, в случае, когда функция объявлена двумя разными способами, либо при повторении некоторого объявления, не являющегося функцией extern или простой переменной.

Multiple scope qualifiers

Множественные квалификаторы контекста

Данный идентификатор С++ был квалифицирован более чем одним именем класса; идентификатор может быть квалифицирован максимум одним классом.

Must take address of a memory location

Должен существовать адрес памяти

Ваш исходный файл использовал операцию адресации (&) в выражении, которое не может выполнять адресацию памяти, например, в случае регистровой переменной.

Need an identifier to declare

Для объявления требуется идентификатор

В данном контексте для завершения объявления требовался идентификатор. Причиной этого сообщения мог стать typedef без имени или лишняя точка с запятой на уровне файла. В С++ это могло быть имя класса, неправильно использованное в качестве другого рода идентификатора.

'new' and 'delete' not supported

`new' и 'delete' не поддерживаются

При вычислении выражения интегрированным отладчиком операции new и delete не поддерживаются.

No : following ?

Нет : после ?

Операции вопросительный знак (?) и двоеточие (:) не соответствуют друг другу в данном выражении. Возможно, отсутствует двоеточие, либо неправильно вложена или отсутствует круглая скобка.

No base class to initialize

Отсутствует базовый класс для инициализации

Конструктор класса С++ пытается неявно вызвать конструктор базового класса, тогда как этот класс был объявлен без базовых классов. Проверьте объявления.

No body defined for this inline function

Не определено тело данной встраиваемой функции

Данная функция С++ определена как inline, но тело этой функции не найдено. Тело встраиваемой функции обычно помещается в том же файле заголовка, что и объявление функции, как для функций-членов, так и для обычных встраиваемых функций.

No constructor parameters allowed for array of class

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

При объявлении массива классов С++ конструктору класса параметры не передаются. Для конструирования каждого элемента такого массива должен использоваться конструктор, не принимающий параметров (конструктор по умолчанию).

No file name ending

Неправильное окончание в имени файла

В имени файла оператора #include отсутствует необходимая завершающая имя кавычка или угловая скобка.

No file names given

Не заданы имена файлов

Командная строка компилятора Turbo C++ командной строки (TCC) не содержит имен файлов. Вы обязаны задать имя исходного файла.

No matching )

Нет соответствующей )

Отсутствует левая круглая скобка, которая соответствовала бы имеющейся правой круглой скобке. Проверьте данное выражение на сбалансированность правых и левых круглых скобок.

Nonportable pointer conversion

Немобильное преобразование указателя

Требуется выполнение неявного преобразования между указателем и интегральным типом, но эти типы имеют разный размер. Такое преобразование не может быть выполнено без явного приведения типов. Такое преобразование может и не иметь смысла, поэтому проверьте, действительно ли оно вам необходимо.

Non-virtual function функция declared pure

Не-виртуальная функция объявлена чистой

Чистыми (pure) могут быть объявлены только виртуальные функции, поскольку производные классы должны иметь возможность их переопределения.

Not an allowed type

Неразрешенный тип

В вашем исходном файле содержится объявление некоторого неразрешенного типа; например, функции, возвращающую функцию или массив.

Not a valid expression format type

Недопустимый тип формата выражения

Недопустимый спецификатор формата после выражения в окне вычислений или наблюдения. Допустимым спецификатором формата является опциональное число повторений, за которым следует символ формата (c, d, f[n], h, x, m, p, r или s).

No type information

Нет информации о типе

Отладчик не имеет информации о типе данной переменной. Модуль был скомпилирован при выключенном отладчике, либо другим компилятором или ассемблером.

Numeric constant too large

Числовая константа слишком велика

Строковые и символьные управляющие последовательности больше шестнадцатиричного \xFF или восьмеричного \377 сгенерированы быть не могут. Двухбайтовые символьные константы могут быть заданы при помощи второй обратной наклонной черты. Например, \x0D\x0A представляет собой двухбайтовую константу. Числовой литерал после управляющей последовательности следует разбит:

printf("\x0D" "12345");

Тем самым будет выведен возврат каретки и затем 12345.

Object must be initialized

Объект должен быть инициализирован

Данный объект С++ объявлен как const, но не инициализирован. Поскольку значения ему присваиваться не могут, то инициализация должна быть выполнена в точке объявления.

Only one of a set of overloaded functions can be функция Только один из набора перегруженных функций может быть

функция

Функции С++ по умолчанию являются перегруженными, и компилятор присваивает каждой из них новое имя. Если вы хотите переопределить присвоение компилятором нового имени, объявив функцию "функция", вы можете сделать это только для одного из набора функций с тем же именем. (в противном случае компоновщик обнаружит более одной глобальной функции с тем же именем).

Operand expected

Ожидался операнд

При оценке текущего выражения компилятор использовал все операнды раньше, чем кончились все операции. Проверьте возможные лишние символы операций (+, *, /, и т.д.) или отсутствующие имена переменных).

Operands are of different or incompatible type

Операнды имеют разные или несовместимые типы

Левая и правая части бинарной операции (+, /, == и т.д.) не могут быть объединены в подобном выражении.

Operator [] missing ]

В operator[] отсутствует ]

В С++ operator[] была объявлена как operator[. Вы должны добавить недостающую квадратную скобку или еще как-либо исправить объявление.

operator -> must return a pointer or a class

operator -> должна возвращать указатель или класс

Функция С++ operator-> должна быть объявлена как возвращающая класс или указатель на класс (или структуру или объединение). В любом случае это должно быть нечто такое, к чему применима операция ->.

Operator cannot be applied to these operand types

Операция не применима к этим типам операндов

Левая или правая сторона бинарной операции (+,-,== и т. д.) не имеет типа, допустимого для данной операции; например, вы пытались сложить два массива.

Operator delete must have a single parameter of type void

Операция delete должна иметь один параметр типа void

Перегруженная операция С++ delete была объявлена иначе.

Operator delete must return void

Операция delete должна возвращать тип void

Перегруженная операция С++ delete была объявлена иначе.

Operator new must have an initial parameter of type size_t

Операция new должна иметь параметр инициализации типа size_t

Операция new может быть объявлена с произвольным числом параметров, но обязательно должна иметь хотя бы один параметр, в котором будет находиться размер распределяемой памяти.

Operator new must have an single parameter of type size_t

Операция new должна иметь один параметр типа size_t

Перегруженная операция С++ new была объявлена иначе.

Operator new must return an object of type void

Операция new должна возвращать объект типа void

Перегруженная операция С++ new была объявлена иначе.

Other objects cannot be declared in a function definition

Другие объекты не могут быть объявлены в определении функции

За телом функции не может стоять запятая и следовать другие объявления.

Например,

int f(), j /* объявление f, запятая допустима,

j также объявляется как int */

int f() (*return 0;*), j; /* здесь f определяется. поэтому запятая недопустима */

Overlays only supported in medium, large and huge memory models

Оверлеи допустимы только для моделей памяти medium, large и huge

Как объяснялось в Главе 4, Оверлеи допустимы только в программах с моделями памяти medium, large и huge.

Overloadable operator expected

Ожидается перегружаемая операция

Почти все операции С++ могут быть перегружены. Единственными исключениями являются операции выбора поля (.), точка со звездочкой (.*), двойное двоеточие (::) и условное выражение (?:). Операции препроцессора # и ## не являются операциями языка С или С++ и потому перегружены быть не могут. Прочие знаки пунктуации, не входящие в число операций, например, точка с запятой, разумеется, также не могут быть перегружены.

Overloaded function is not allowed here

Перегруженная функция здесь не разрешена

При изменении защиты доступа компонента базового класса С++ в производном классе этот компонент не может являться перегруженной функцией.

Overloaded function resolution not supported

Разрешение перегруженной функции не поддерживается

При вычислении выражения интегрированным отладчиком разрешение перегруженных функций или операций не поддерживается, даже для приема адреса.

Parameter параметр missing name

Отсутствует имя параметра

В заголовке определения функции этот параметр состоит только из спецификатора типа, без имени параметра. В С это недопустимо. (В С++ это разрешено, но тогда невозможно сослаться на параметр функции.)

Parameter names are used only with a function body

Имена параметров используются только в теле функции

При объявлении функции (без определения тела функции) вы должны использовать либо пустые круглые скобки, либо прототип функции. Список имен параметров не разрешен.

Примеры объявлений:

int func(); /* объявление без прототипа допустимо */

int func(int, int); /* объявление с прототипом допустимо */

int func(int i, int j); /* имена параметров в прототипе допус

тимы */

int func(i, j); /* только имена параметров недопустимы*/

Pointer required on left side of ->

В левой части -> требуется указатель

В левой части операции (->) не допустимо ничего, кроме указателя.

Pointer to a static member cannot be created

Указатель на статический компонент не может быть создан

Указатели на компоненты класса С++ могут быть созданы только для обычных компонентов данных и функций-компонентов. Создание указателя статического компонента невозможно.

Previously specified default argument value cannot be changed

Ранее заданное значение умолчания аргумента не может изменяться

Если параметр функции С++ объявляется со значением по умолчанию, то данное значение не может быть изменено или опущено в любом другом объявлении той же самой функции.

Pure function функция not overriden in класс

Чистая функция не переопределена в классе

Чистая виртуальная функция должна быть либо переопределена (новым объявлением) либо пере-объявлена как чистая в производном классе.

Reference member компонент is not initialized

Компонент - ссылка не инициализирован

Ссылки всегда должны быть инициализированными. Компонент класса типассылки должен иметь инициализатор во всех конструкторахдля данного класса. Это означает, что вы не можете зависеть от компилятора в вопросе генерации конструкторовдля такого класса, поскольку неизвестно, как инициализировать ссылки.

Reference member компонент needs a temporary for initialization

Компонент - ссылка требует временную память для инициализации

Пользователь задал исходное значение ссылки, которое не являлось именующим значением типа, на который установлена ссылка. Это требует, чтобы компилятор получил временную память для инициализации. Поскольку эта временная память отсутствует, инициализация недействительна.

register is the only storage class allowed

единственным разрешенным классом памяти является register

Единственным разрешенным классом памяти для параметров функции является register.

Repeat count neads an lvalue

Для счетчика циклов требуется именующее значение

Выражение перед запятой (,) в окне Watch или Evaluate должно являться допускающим манипуляции с ним участком памяти. Например, следующие выражения недопустимы:

i++,10d

x = y, 10m

Right side of .* is not a member pointer

Правая часть .* не является указателем компонента

Правая часть операции С++ "точка со звездочкой" (.*) должна быть объявлена как указатель на компонент класса, заданного левой частью операции. В данном случае правая часть не является указателем компонента.

Side effects are not allowed

Побочные эффекты не разрешены

В окне наблюдения (Watch) побочные эффекты, такие как присвоения, ++ или --, не разрешены. Общая ошибка состоит в использовании x=y (недопустимо) вместо x==y при проверке равенства x и y.

Size of идентификатор unknown or zero

Размер идентификатора неизвестен или нулевой

Данный идентификатор был использован в контексте, где нужен размер. Без размера могут быть объявлены только тег структуры (структура еще не определена) , либо extern массив. Ссылки к таким элементам (например, операцией sizeof) или обращение к ним через указатель к этому типу запрещены. Реорганизуйте объявление таким образом, чтобы размер данного идентификатора был известен.

sizeof may not be applied to a bit field

Операция sizeof неприменима к битовому полю

sizeof возвращает размер объекта данных в байтах и неприменим к битовым полям.

sizeof may not be applied to a function

Операция sizeof неприменима к функции

Операция sizeof применима только к объектам данных, а не к функциям. Можно запросить размер указателя функции.

Size of the type is unknown or zero

Размер типа неизвестен или нулевой

Данный тип использовался в контексте, где необходим размер. Например, тег структуры может быть только объявлен (а структура еще не определена). Тогда некоторые ссылки к ней (например, операцией sizeof) или обращение к ней через указатель недопустимы. Реорганизуйте объявления данного типа таким образом, чтобы размер этого типа был доступен.

Size of this expression is unknown or zero

Размер этого выражения неизвестен или нулевой

В выражении участвует тип или переменная неизвестного размера в контексте, где необходим размер. Например, тег структуры может быть только объявлен (а структура еще не определена). Тогда некоторые ссылки к ней (например, операцией sizeof) или обращение к ней через указатель недопустимы. Реорганизуйте объявления таким образом, чтобы размер был доступен.

Statement is required here

Здесь требуется оператор

Некоторые части программ С и С++ обязательно требуют наличие оператора (это может быть просто точка с запятой); он помещается между меткой и концом блока, в котором находится метка, а также после if, do, while или for.

Statement missing ;

В операторе отсутствует ;

Компилятор встретил выражение с оператором без завершающей точки с запятой.

Static and union members cannot require initialization Статические компоненты и компоненты объединений не мо-

гут требовать инициализации

Класс С++, имеющий конструктор или любые виртуальные функции, или производный класс отимеющего их класса, должен быть инициализирован. Статический компонент данных этого класса не можетбыть инициализирован,и также не может иметь тип, для которого требуется инициализация.

Storage class класс памяти not allowed for a field

Класс памяти не разрешен для функции

В С и С++ функция может быть extern или static. В С++ функция может также иметь класс памяти inline. Никакие другие классы памяти недопустимы, и кроме того, класс памяти может быть задан только один.

Storage class класс памяти is not allowed here

Класс памяти здесь не разрешен

Указанный класс памяти здесь не разрешен. Возможно, было задано два класса памяти, тогда как разрешен только один.

Structure size too large

Слишком большой размер структуры

В исходном файле объявлена структура размером более 64К.

Subscripting missing ]

В индексе отсутствует ]

Компилятор встретил выражение с индексом, в котором отсутствует закрывающая квадратная скобка. Это может являться следствием отсутствия необходимой операции или наличия лишней, либо несоответствия числа открывающих числу закрывающих круглых скобок.

Switch selection expression must be of integral type Выражение выбора в операторе switch должно быть интег-

рального типа

Задаваемое в круглых скобках выражение выбора оператора switch должно давать значение интегрального типа (char, short, int, long, enum). Для того, чтобы выполнить данное требование, можно воспользоваться явным приведением типов.

Switch statement missing (

В операторе switch отсутствует (

В операторе switch компилятор не смог обнаружить левой круглой скобки после ключевого слова switch.

Switch statement missing )

В операторе switch отсутствует )

В операторе switch компилятор не смог обнаружить левой круглой скобки после выражения проверки.

'this' can only be used within a member function

'this' можно использовать только в функции-компоненте

В С++ this - это резервированное слово, которое можно использовать только в пределах функций-компонентов класса.

Too few parameters in call

Слишком мало параметров в вызове

Вызов функции с прототипом (через указатель) имеет слишком мало аргументов. Прототипы требуют точного задания всех параметров.

Too few parameters in call to функция

Слишком мало параметров в вызове функции

Вызов названной функции (объявленной с использованием прототипа) имеет слишком мало аргументов.

Too many decimal points

Слишком много десятичных точек

Компилятор встретил константу с плавающей точкой, в которой находится более одной десятичной точки.

Too many default cases

Слишком много операторов слов default

Компилятор встретил более одного оператора default в одной конструкции switch.

Too many error or warning messages

Слишком много сообщений об ошибке или предупреждений

Компилятор может зарегистрировать до 255 ошибок или предупреждений, а потом остановит свою работу.

Too many exponents

Слишком много экспонент

Компилятор встретил в константе с плавающей точкой более одной экспоненты.

Too many initializers

Слишком много инициализаторов

Компилятор встретил больше инициализаторов, чем это допускается инициализируемым объявлением.

Too many storage classes in declaration

В объявлении слишком много классов памяти

В объявлении должно быть указано не больше одного класса памяти.

Too many types in declaration

В объявлении слишком много типов

Объявление может содержать не более одного из следующих базовых типов: char, int, float, double, struct, union, enum или typedef-имя.

Too much global data defined in file

В файле объявлено слишком много глобальных данных

Сумма объявленных глобальных данных превысила по размеру 64К. Проверьте объявления массивов, которые могут быть причиной выхода за пределы памяти. Либо реорганизуйте программу, либо, если все объявления вам нужны, используйте переменные far.

Trying to derive a far class from a near base

Попытка объявить производный класс far от базового класса near

Если класс объявлен (или имеет умолчание) near, то все классы, производные от него, также должны быть near.

Trying to derive a near class from a far base

Попытка объявить производный класс near от базового класса far

Если класс объявлен (или имеет умолчание) far, то все классы, производные от него, также должны быть far.

Two consecutive dots

Две последовательно расположенные точки

Поскольку многоточие состоит из трех точек (...), а десятичная точка и операция выбора компонента используют только одну точку (.), то две последовательные точки недопустимы в программе С.

Two operands must evaluate to the same type

Два операнда должны давать один и тот же тип

Типы выражений по обеим сторонам двоеточия в условной операции (?:) должны быть одинаковыми, за исключением тех, что позволяют взаимные преобразования типа - char в int, float в double или void* в конкретный указатель. В данном выражении по обеим сторонам операции имели различные, не преобразуемые автоматически типы. Это может быть либо ошибкой, либо вам нужно просто выполнить приведение типов участвующих в выражении операндов.

Type mismatch in parameter номер

Несоответствие типа параметра номер

Вызванная через указатель функция была объявлена с прототипом; данный же параметр с указанным "номером" (отсчитывая слева-направо от 1) не может быть преобразован к объявленному типу параметра.

Type mismatch in parameter номер in call to функция

Несоответствие типа параметра номер в вызове функции

В вашем исходном файле объявлена указанная функция с прототипом, а данный параметр с указанным номером (отсчитывая слева-направо от 1) не может быть преобразован к объявленному типу параметра.

Type mismatch in parameter параметр

Несоответствие типа параметра

Вызванная через указатель функция была объявлена с прототипом; указанный же параметр не может быть преобразован к объявленному типу параметра.

Type mismatch in parameter параметр in call to функция

Несоответствие типа параметра в вызове функции

В вашем исходном файле объявлена указанная функция с прототипом, а указанный параметр не может быть преобразован к объявленному типу параметра.

Type mismatch in redeclaration of идентификатор

Несоответствие типа в переобъявлении идентификатора

В вашем исходном файле переменная переобъявляется с другим типом, нежели тот, с которым она была объявлена первоначально. Это может произойти, если функция вызывается и затем объявляется с типом возврата, отличным от целочисленного. В этом случае вы должны объявить функцию до первого к ней обращения.

Type name expected

Ожидается имя типа

Произошла одна из следующих ошибок:

- В объявлении на уровне файла переменной или поля структуры не задано ни имени типа, ни класс памяти.

- В объявлении typedef не задано имя типа.

- В объявлении деструктора класса С++ имя деструктора не равно имени типа (имя деструктора класса должно совпадать с именем класса).

- В задании имени базового класса С++ имя не является именем класса.

Type qualifier идентификатор must be a struct or class name Квалификатор типа идентификатор должен быть именем

структуры или класса

Квалификатор С++ в конструкции квалификатор::идентификатор не является именем структуры или класса.

Unable to create output file имя_файла

Невозможно создать выходной файл имя_файла

Эта ошибка может встретиться, когда рабочий диск либо заполнен, либо защищен от записи. Если диск заполнен, попробуйте удалить ненужные файлы и перезапустить компиляцию. Если диск защищен от записи, перенесите исходные файлы на диск, где запись разрешена, и повторите компиляцию. Данная ошибка часто случается, когда директория, в которую назначен вывод файла, не существует.

Unable to create turboc.$ln

Невозможно создать turboc.$ln

Компилятор не может создать временный файл TURBOC.$LN, поскольку отсутствует доступ к диску или диск полон.

Unable to execute command команда

Невозможно выполнить команду

Не найден TLINK или TASM, либо поврежден диск.

Unable to open include file имя_файла

Невозможно открыть включаемый файл имя_файла

Компилятор не может найти указанный файл. Это может быть также в том случае, когда включаемый директивой #include файл включает сам себя, либо если не задан параметр FILES в файле CONFIG.SYS в корневой директории (попробуйте установить FILES=20). Проверьте, существует ли действительно не найденный файл.

Unable to open input file имя_файла

Невозможно открыть входной файл имя_файла

Данная ошибка происходит, если не найден исходный файл. Проверьте правильность написания имени, а также, находится ли указанный файл в нужной директории на нужном диске.

Undefined label идентификатор

Неопределенная метка идентификатор

Указанная метка задана в функции в операторе goto, но определение метки отсутствует.

Undefined structure структура

Неопределенная структура

В вашем исходном файле указанная структура используется в строке, которая находится несколько выше строки, где обнаружена ошибка (возможно, задан указатель этой структуры), а определение структуры отсутствует. Это обычно происходит при опечатке в имени структуры, либо при отсутствии ее определения.

Undefined symbol идентификатор

Неопределенное символическое имя идентификатор

Указанный идентификатор не объявлен. Это может произойти при опечатке либо в данной точке программы, либо в объявлении. Такая ошибка регистрируется также при ошибке в объявлении идентификатора.

Unexpected *)

Неожиданное появление *)

Лишняя фигурная правая скобка встречена там, где она не ожидалась. Проверьте отсутствие (*.

Unexpected ) - check for matching parenthesis

Неожиданное появление ) - проверьте наличие открывающей скобки

Лишняя круглая правая скобка встречена там, где она не ожидалась. Проверьте отсутствие (.

Unexpected : found

Неожиданное появление :

Лишнее двоеточие встречено там, где оно не ожидалось. Проверьте отсутствующий или неверно набитый знак ?.

Unexpected end of file in comment started on номер строки

Неожиданно встречен конец файла в комментарииномер строки

Исходный файл кончился в середине комментария. Это обычно происходит при отсутствии признака конца комментария (*/).

Unexpected end of file in conditional started on номер строки

Неожиданно встречен конец файла в условной директиве номер строки

Исходный файл кончился раньше, чем компилятор встретил #endif. Либо это отсутствие, либо опечатка в #endif.

Union cannot have a base type

Объединение не может иметь базовый тип

В целом, класс С++ может иметь тип union, но такой класс не может являться производным от другого класса.

Union members cannot require initialization

Компоненты объединения не могут требовать инициализации

Поскольку продолжительность жизни компонента объединения не определена, недопустимо объявлять объединение, требующее любого рода инициализации.

Unknown language, must be C or C++

Неизвестный язык, здесь должен быть С или С++

В конструкции С++

extern имя тип func( /*...*/);

имя в кавычках должно быть С или С++; другие имена не распознаются. Вы можете объявить внешнюю функцию с типом Pascal без переименования компилятором:

extern "C" int pascal func( /*...*/ );

Функция С++ (возможно, перегруженная) может быть объявлена с типом Pascal и позволять обычные переименования компилятором (чтобы была возможной перегрузка) следующим образом:

extern int pascal func( /*...*/ );

Unknown preprocessor directive: идентификатор

Неизвестная директива препроцессора: идентификатор

Компилятор встретил в начале строки символ #, а следующее за ним имя директивы не являлось допустимым именем директивы: define, undef, line, if, ifdef, ifndef, include, else или endif.

Unterminated string or character constant

Незавершенная строка или символьная константа

Компилятор не нашел завершающей кавычки в конце строки или символьной константы.

Use . or -> to call функция

Используйте для вызова функции . или ->

Попытка вызвать функцию-компонент, не задав объект.

Use :: to take the address of a member function

Используйте :: для обращения к адресу функции-компонента

Если f есть функция-компонент класса c, вы можете обратиться к ееадресупри помощи &c::f. Отметим использование имени типа класса вместо имени объекта и то, чтоимя класса отделяется от именифункции при помощи ::. (Указатели функций -компонентов не являются истинными указателями типа и не относятся кконкретному вхождению данного класса).

Use ; to terminate declarations

В конце объявлений должна находиться ;

Данное объявление не заканчивается запятой или точкой с запятой.

User break

Прерывание пользователя

Вы ввели во время компиляции или компоновки в интегрированной среде Ctrl-Break. (Это не ошибка, а просто подтверждение приема вашей команды прерывания выполнения).

Value of type void is not allowed

Значение типа void не разрешено

Значение типа void практически не является значением вообще и не может появляться в контексте, требующем фактически существующего значения. Таким контекстом может являться правая часть операции присвоения, аргумент функции или управляющее выражение условных операторов if, for или while.

Variable идентификатор is initialized twice

Переменная идентификатор инициализирована дважды

Данная переменная инициализируется более одного раза. Допускается многократное объявление переменной на уровне файла, но инициализация должна выполняться только один раз (даже если одна инициализация повторяет другую).

Variable name expected

Ожидается имя переменной

При использовании операции адресации (&), либо когда в С++ возвращается ссылка на объект, должен быть указан объект. Обычно это имя переменной. В данном случае компилятору было задано взять адрес чего-либо неподходящего.

Vectors of classes must use the default constructor

Векторы классов должны использовать конструктор по умолчанию

При инициализации вектора (массива) классов вы должны использовать конструктор без аргументов. Такой конструктор называется конструктором по умолчанию, что означает, что при инициализации такого вектора вы не можете задать конструктору аргументы.

Virtual function функция1 conflicts with функция2 Виртуальная функция1противоречит функции2

Виртуальная функция имеет те же типы аргументов, что и функция в базовом классе, но имеет другой тип возврата. Это недопустимо.

virtual specified more than once

virtual задано более одного раза

Резервированное слово С++ virtual может появиться в определении функции-компонента только один раз.

void & is not a valid type

void & не является допустимым типом

Очевидное сообщение об очевидных ограничениях. Эта ошибка означает, что вы пытались инициализировать или использовать недопустимым образом тип ссылки, и для нее также выдается и другое сообщение. Но так понятнее.

While statement missing (

В операторе while отсутствует (

В операторе while компилятор не обнаружил левой круглой скобки после ключевого слова while.

While statement missing )

В операторе while отсутствует )

В операторе while компилятор не обнаружил правой круглой скобки после выражения проверки.

Wrong number of arguments in call of макрос

Неверное число параметров при вызове макроса

В исходном файле указанный макрос вызывается с неверным чис лом параметров.

Предупреждения

функция1 hides virtual function функция2

функция1 скрывает виртуальную функцию2

Виртуальная функция базового класса обычно переопределяется объявлением в производном классе. В данном случае объявление того же имени с другими типами аргументов делает функцию недоступной последующим производным классам.

идентификатор is declared as both external and static

идентификатор объявлен сразу как external и static

Данный идентификатор появился в объявлении, неявно или явно обозначающем его как global или external, и кроме того, в объявлении, обозначающем его как static. Идентификатор в таком случае считается static. Проверьте все объявления данного идентификатора.

идентификатор declared but never used

идентификатор объявлен, но нигде не использован

В исходном файле указанное имя переменной объявлено как часть только что закончившегося блока, но переменная нигде не используется. Данное предупреждение выдается, когда компилятор встречает закрывающую фигурную скобку составного оператора или функции. Объявление переменной находилось в начале этого составного оператора или функции.

идентификатор is assigned a value that is never used

идентификатору присвоено значение, нигде не используемое

Переменная участвует в операции присвоения, но нигде в заканчивающейся функции не используется. Предупреждение выдается, когда встречается закрывающая фигурная скобка данной функции.

идентификатор is both a structure tag and a name, now obsolete

идентификатор одновременно является тегом структуры и имя,

устаревшая возможность

В С допустимо использовать идентификатор сразу как тег структуры и имя переменной или typedef, как в следующем примере:

struct s (* int i, j; *) s;

или

typedef struct s (* int i, j; *) s;

В С++ это недопустимо.

Ambiguous operators need parentheses

Неоднозначные операции требуют круглых скобок

Данное предупреждение выдается, две операции сдвига, отношения или поразрядные логические операции используются вместе без круглых скобок. Также это предупреждение появится, если операция вычитания используется без скобок вместе с операцией сдвига. Программисты часто путают приоритеты этих операций, поскольку присвоенные им приоритеты не интуитивны.

Assigning тип to перечислимый тип

Присвоение типа перечислимому типу

Присвоение целочисленного значения перечислимому типу. Это является ошибкой, но выдаваемое сообщение имеет уровень предупреждения, и программа может заработать.

Assignment to this is obsolete, use X::operator new instead Такое присвоение устарело, используйте вместо него

X::operator new

В старых версиях С++ единственный способ управления распределением класса объектов заключался в присвоении параметру this внутри конструктора. Теперь это отменено, поскольку существует более эффективный, безопасный и более общий способ, состоящий в определении функции-компонента operator new.

Base initialization without a class name is now obsolete

Инициализация базового класса без имени устарела

В старых версиях С++ инициализация базового класса выполнялась за счет помещения после заголовка конструктора списка параметров конструктора базового класса. В настоящее время рекомендуется включать имя базового класса.

Это делает создаваемый код более понятным и необходимо в случае множественных базовых классов.

Старый способ:

derived::derived(int i) : (i, 10) (* ... *)

Новый способ:

derived::derived(int i) : base(i, 10) (* ... *)

Bit fields must be signed or unsigned int

Битовые поля должны иметь тип signed или unsigned int

Битовое поле должно быть объявлено имеющее интегральный тип со знаком или без. В ANSI C битовое поле может быть только signed или unsigned int (а не char или long, например).

Both return and return with a value

Одновременно присутствуют операторы return и return с заданным значением

Текущая функция имеет операторы return с заданным значением возврата и без значения возврата одновременно. В С это допустимо, но практически всегда является ошибкой. Вероятно, оператор return просто был опущен в конце функции.

Call to function with no prototype

Вызов функции без прототипа

Это сообщение выдается в тех случаях, когда разрешено сообщение "Prototype required" и вы вызываете функцию без первоначального задания прототипа этой функции.

Call to function функция with no prototype

Вызов функциифункция без прототипа

Это сообщение выдается в тех случаях, когда разрешено сообщение "Prototype required" и вы вызываете функцию "функция" без первоначального задания прототипа этой функции.

Code has no effect

Код не вызывает никаких действий

Данное предупреждение выдается, когда компилятор встречает оператор с операциями, не выполняющими никаких действий. Например, оператор

a + b;

не оказывает воздействия ни на какую переменную. Операция не нужна и наверняка записана по ошибке.

Constant is long

Длинная константа

Компилятор встретил либо десятичную константу, превышающую значение 32767, либо восьмеричную (или шестнадцатиричную) константу, превышающую значение 65535 без следующей за ней буквы l или L. Такая константа будет рассматриваться как имеющая тип long.

Constant member компонент is not initialized

Константа-компонент не инициализирована

Класс С++ имеет константу-компонент, которая не была инициализирована. Отметим, что допустимым является инициализировать константу-компонент, а не присваивать ей значение.

Constant out of range in comparison

Участвующая в сравнении константа вне допустимого диапазона

В исходном файле имеется сравнение, в котором участвует под-выражение, лежащее вне диапазона, допустимого для прочих типов под-выражений. Например, сравнение числа unsigned с -1 не имеет смысла. Для того, чтобы получить константу unsigned больше 32767 (десятичное), требуется либо явно задать приведение типа к unsigned [например, (unsigned)65535], либо добавить к константе буквы u или U (например, 65535u).

При выдаче данного сообщения компилятор тем не менее сгенерирует код для сравнения. Если даже данный код будет всегда давать одинаковый результат, например при сравнении выражения типа char с 4000, код все равно будет выполнять сравнение.

Conversion may lose significant bits

При преобразовании могут быть потеряны значащие биты

В операции присвоения, или в других обстоятельствах, требуется преобразование long или unsigned long в int или unsigned int. Поскольку переменные типов int и long имеют разный размер, такое преобразование может привести к изменению работы программы.

Declaration does not specify a tag or an identifier

Объявление не задает тег или идентификатор

Данное объявление ничего не объявляет. Обычно это структура или объединение без тега или переменная в объявлении.

Некоторые ранние компиляторы С позволяли объявления вида

struct (* int a; int b; *);

с последующим использованием a и b в качестве родовых полей для любой переменной. выражение типа x.b разрешалось даже x не имел тип структуры. Теперь это не практикуется, и данное сообщение поможет вам выявить все такие места в программе.

Declare функция prior to use in prototype

Функция должна быть объявлена до использования в прототипе

Когда прототип функции ссылается к типу структуры, который не был ранее объявлен, объявление внутри прототипа - это не то же самое, что объявление вне прототипа. Например,

int func(struct s *ps);

struct s (* /* ... */ *)

Поскольку структуры s в контексте прототипа для func не существует, то типом параметра ps является указатель на неопределенную структуру s; это не то же самое, что для объявляемой после структуры s. Все это приведет к дальнейшим предупреждениям и сообщениям об ошибке, говорящих о несовместимых типах, которые будут вам непонятны без данного предупреждения. Для решения этой проблемы вы может перенести объявление структуры s до любого ссылающегося на нее прототипа, либо добавить неполное объявление типа struct s; перед каждым ссылающимся на эту структуру прототипом. Если параметром функции является структура, а не указатель структуры, то неполного объявления недостаточно; вы должны поместить полное объявление структуры перед прототипом.

Division by zero

Деление на ноль

Выражение с делением или получением остатка имеет в качестве делителя литеральный ноль.

Functions containing резервируемое слово are not expanded inline

Функции содержащие резервируемое слово не могут быть встраиваемыми

Функции, содержащие резервируемые слова do, for, while, goto, switch, break, continue и case, не могут быть встраиваемыми, даже при наличии задания их как inline. Функция может использоваться, но будет рассматриваться как обычная статическая (не глобальная) функция. Копия этой функции будет находиться в любой единице компиляции, где она вызывается.

Function should return a value

Функция должна возвращать значение

В исходном файле текущая функция определена с типом возврата иным, нежели int или void, но компилятор встретил оператор return без значения возврата. Обычно это какая-то ошибка. Исключение составляют функции int, поскольку в старых версиях С типа void для обозначения функций без значения возврата не существовало.

Hexadecimal value contains more than 3 digits

Шестнадцатиричное значение содержит более 3 цифр

В старых версиях С шестнадцатиричная управляющая последовательность могла иметь не более трех цифр. Новый стандарт ANSI позволяет любое число цифр, лишь бы значение помещалось в байт. Это сообщение выдается, когда шестнадцатиричная управляющая последовательность имеет много ведущих нулей (например, "\x00045"). Старые версии С интерпретировали бы данную строку иначе.

Ill-formed pragma

Неправильно оформленная директива pragma

Директива pragma не соответствует ни одной из ожидаемых компилятором директив этого рода.

Initialization is only partially bracketed

Инициализация только частично заключена в квадратные скобки

При инициализации структуры квадратные скобки могут отмечать инициализациюкаждого компонента структуры. Если такой компонент сам являетсямассивом или структурой, могут использоваться вложенные пары квадратных скобок. Это гарантирует совпадение ваших намерений и представления компилятора о том, какие значения к каким компонентам относятся. Если какие-то из этих необязательных скобок опущены, компилятор выдаст данное предупреждение.

Initialization with inappropriate type

Инициализация неверным типом

Переменная типа enum инициализируется значением неверного типа. Например,

enum count (* zero, one, two *) x = 2;

приведет к выводу данного предупреждения, поскольку 2 имеет тип int, а не тип enum count. При присвоении или инициализации перечислимого типа лучше пользоваться идентификаторами, определенными в данном перечислимом типе, а не целочисленными литералами.

Initializing идентификатор with тип

Инициализация идентификатора типом

Вы пытаетесь инициализировать переменную типа enum значением неверного типа. Это ошибка, но выдается только предупреждение, и программа получает шанс заработать.

Mixing pointers to signed and unsigned char

Смешанное использование указателей на signed и unsigned char

Вы преобразовали указатель на char в указатель на unsigned char, либо наоборот без явного приведения типов. (Строго говоря, это допустимо, но на 8086 часто приводит к ошибочным результатам).

No declaration for function функция

Отсутствует объявление функции

Это сообщение выдается при попытке вызова функции без ее предварительного объявления. В С можно объявить функцию без прототипа, например "int func();". В С++ каждое объявление функции является также ее прототипом; приведенный пример эквивалентен "int func(void);". Объявление может быть записано как в классическом, так и в современном (с прототипом) стиле.

Non-const function функция called for const object

Функция, не имеющая типа константы, вызвана для объекта -константы

Функция-компонент, не имеющая типа константы, вызвана для объекта типаконстанты. Это ошибка, но выдается только предупреждение, и программа получает шанс заработать.

Nonportable pointer comparison

Немобильное сравнение указателей

В вашем исходном файле указатель сравнивается с не-указателем, не являющимся нулевой константой. Если сравнение выполняется так, как вам нужно, можно использовать приведение, чтобы подавить вывод данного предупреждения.

Nonportable pointer conversion

Немобильное преобразование указателя

Ненулевое интегральное значение используется в контексте, где ожидается указатель или интегральное значение; размеры указателя и интегрального значения одинаковы. Если вы действительно намереваетесь использовать данное преобразование, следует выполнить явное приведение типов.

Obsolete syntax; use :: instead

Устаревший синтаксис; используйте ::

Старые версииС++ использовали для разделения имени компонента и имени класса в объявлениях или определениях символы точка (.) или двоеточие (:). Это устаревший способ записи; следует использовать вместо него двойное двоеточие (::).

Старый способ:

void myclass:func(int i) (* /* ... */ *)

Новый способ:

void myclass::func(int i) (* /* ... */ *)

Overload is now unnecessary and obsolete слово overload теперь не нужно и устарело

В старых версиях С++ для обозначения имен перегруженных функций служило резервируемое слово overload. Теперь С++ использует схему "безопасной с точки зрения типа компоновки", когда любая функция считается перегруженной, если не указано противоположное. Использование слова overload не требуется.

Parameter параметр is never used

Параметр не используется

Указанный параметр, объявленный в функции, нигде не используется в теле функции. Это может быть, а может и не быть ошибкой, и часто является следствием описки в параметре. Это предупреждение появляется также, если в теле функции данный параметр переобъявлен как автоматическая (динамическая локальная) переменная. Параметр маскируется автоматической переменной и не используется.

Possible use of идентификатор before definition

Возможное использование идентификатора до определения

В вашем исходном файле указанная переменная используется в выражении до того, как ей присваивается значение. Для выявление данной ситуации компилятор использует простое сканирование программы. Если использование переменной физически находится до какого-либо присвоения, то генерируется данное сообщение. Разумеется, фактически операторы управления потоком выполнения программы могут привести к тому, что присвоение данной переменной случится раньше, чем программа ее использует.

Possibly incorrect assignment

Возможно неправильное присвоение

Данное сообщение выдается в том случае, когда компилятор встречает вместо главной операции условного выражения операцию присвоения (т.е. как часть оператора if, while или do-while). Очень часто это просто опечатка. Если вы желаете подавить вывод данного сообщения, заключите присвоение в круглые скобки и выполните его явное сравнение как единого целого с нулем. Таким образом,

if (a = b) ...

следует переписать как

if ((a = b) != 0) ...

Program flow can skip this initialization; try using (**)

Поток программы может обойти данную инициализация; попробуйте использовать (**)

Инициализация длинной переменной зависит от оператора if, и потому может быть обойдено программой. Для управления контекстом этой переменной следует заключить блок в пару фигурных скобок.

Redefinition of макрос is not identical

Переопределение макроса не идентично

В исходном файле указанный макрос переопределяется с использованием текста, не идентичного тексту первого определения макроса. Новый текст заменит старый.

Restarting compile using assembly

Перезапуск компилятора с использованием ассемблера

Компилятор встретил оператор asm, не встретив перед этим опции командной строки -B или оператора #pragma inline. происходит перезапуск компилятора с включенным средством встроенного ассемблирования.

Structure passed by value

Структура передана по значению

Если выдача данного предупреждения разрешена, то оно будет генерироваться всякий раз, когда структура передается в качестве аргумента по значению. Распространенная ошибка состоит в том, что при передаче структуры как аргумента программист опускает операцию адресации &. Поскольку передача структуры по значению не запрещена, то опустить данную операцию можно. Это предупреждение сообщает вам о нерациональности ваших действий.

Style of function definition is now obsolete

Этот стиль определения функции устарел

В С++ старый стиль определения функции запрещен:

int func(p1, p2) int p1, p2; (* /* ... */ *)

Он также не допускается и многими другими компиляторами С++.

Superfluous & with function

Избыточная операция & с функцией

Операция адресации (&) с именем функции не требуется; любая подобная операция отвергается.

Suspicious pointer convercion

Подозрительное преобразование указателя

Компилятор встретил некоторое преобразование указателя, которое изменило тип, на который он указывает. Если это преобразование вам нужно, то для подавления данного предупреждения воспользуйтесь явным приведением.

Temporary used to initialize идентификатор

Для инициализации идентификатора использовалась временная переменная

Temporary used for parameter номер in call to идентификатор При вызове идентификатора для параметра номер

использовалась временная переменная

Temporary used for parameter параметр in call to идентификатор

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

Temporary used for parameter номер

Для параметраномер использовалась временная переменная

Temporary used for parameter параметр

Для параметрапараметр использовалась временная переменная

В С++ переменной или параметру типа ссылки должна быть присвоена ссылка на объект этого же типа. Если типы не совпадают, фактическое значение присваивается временной переменной нужного типа, а адрес этой временной переменной присваивается переменной или параметру типа ссылки. Предупреждение означает, что данная переменная или параметр типа ссылки относится не к тому, чему вы ожидали, а к временной переменной; в других ситуациях это предупреждение не выдается.

Например, функция f требует ссылку на int, а c имеет тип char:

f(int&);

char c;

f(c);

Вместо вызова f с адресом c компилятор генерирует код, эквивалентный следующему исходному коду С++:

int X = c, f(X);

Undefined structure идентификатор

Неопределенная структура идентификатор

Указанная структура была использована в исходном файле, возможно в указателе на нее, но не была определена в исходном файле. Это предупреждение может являться следствием опечатки в имени структуры или отсутствия объявления.

Unknown assembler instruction

Неизвестная команда ассемблера

Компилятор встретил оператор встроенного ассемблирования с недопустимым кодом операции. Проверьте написание кода операции (в Главе 6, "Интерфейс с языком ассемблера" на стр. 271 оригинала). По умолчанию вывод этого сообщения отключен.

Unreachable code

Недоступный код

За оператором break, continue, goto или return не следует метка или конец цикла или функции. Компилятор отыскивает циклы while, do и for с условным выражением типа константы и пытается распознать циклы, из которых не существует условия выхода.

Untyped bit field assumed signed int

Нетипизированному битовому полю присвоен тип signed int

Данное битовое поле не имеет спецификации типа и ему присваивается тип signed int. Некоторые компиляторы присваивают таким полям по умолчанию тип signed int. Чтобы это предупреждение не выдавалось, вы должны сами присвоить битовому полю тип int или unsigned int.

Void functions may not return a value

Функции void не могут возвращать значений

В исходном файле текущая функция объявлена с типом возврата void, а компилятор встретил оператор return, в котором задано значение возврата. Это значение игнорируется.

Приложение А Стандарты ANSI, зависящие от реализации

Некоторые аспекты стандарта ANSI C не определяются ANSI достаточно подробно. В таких случаях каждая реализация компилятора С может сама определять отношение к этим аспектам. Данная глава говорит о том, как эти зависящие от реализации стандарты определены фирмой Borland. Номера разделов соответствуют здесь публикации стандарта ANSI от декабря 1988 года, которая является самой новой. Отметим, что между С и С ++ имеются различия, а данное приложение относится исключительно к С.


Информация о работе «Turbo C++ Programer`s guide»
Раздел: Информатика, программирование
Количество знаков с пробелами: 668870
Количество таблиц: 13
Количество изображений: 0

Похожие работы

Скачать
14945
0
7

... к сожалению, обратное утверждение не верно. C++ Builder содержит инструменты, которые при помощи drag-and-drop действительно делают разработку визуальной, упрощает программирование благодаря встроенному WYSIWYG - редактору интерфейса и пр. Delphi — язык программирования, который используется в одноимённой среде разработки. Сначала язык назывался Object Pascal. Начиная со среды разработки Delphi ...

Скачать
225728
6
0

... ориентированы на 32 разрядные шинные архитектуры компьютеров с процессорами 80386, 80486 или Pentium. Фирма Novell также подготовила варианты сетевой ОС NetWare, предназначенные для работы под управлением многозадачных, многопользовательских операционных систем OS/2 и UNIX. Версию 3.12 ОС NetWare можно приобрести для 20, 100 или 250 пользователей, а версия 4.0 имеет возможность поддержки до 1000 ...

Скачать
49224
0
9

... завдання поширюється на розробку системи обліку зареєстрованих автомобілів в ДАІ, призначеної для збору, зберігання, а також полегшення для доступу та використання інформації. Програма з обліку зареєстрованих автомобілів в ДАІ, представляє собою, перехід від паперових носіїв інформації до електронних. Система обліку зареєстрованих автомобілів значно допоможе працівникам ДАІ з обліку, аналізу та ...

Скачать
132529
1
5

... меньше времени и ответ клиенту агентство может дать уже в день подачи заявки. Каждая турфирма разрабатывает индивидуальный образец листа бронирования. Согласно Федеральному Закону «Об основах туристской деятельности в Российской Федерации» (гл. IV, ст. 9) – это конкретный заказ туриста или лица, уполномоченного представлять группу туристов, туроператору на формирование туристского продукта. ...

0 комментариев


Наверх