Back
 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 года, которая является самой новой.
 Отметим, что между С и С++ имеются различия, а данное приложение
 относится исключительно к С.


 2.1.1.3  Как идентифицировать диагностические сообщения

      При запуске с правильной комбинацией опций любое сообщение,
 выдаваемое компилятором и начинающееся словами Fatal, Error или
 Warning, считается диагностическим в смысле, определяемом ANSI.
 Ниже приводятся опции, необходимые для того, чтобы обеспечивалась
 данная интерпретация:

 Идентификация диагностических сообщений в Turbo C++   Таблица A.1
 -----------------------------------------------------------------
 Опция     Действие
 -----------------------------------------------------------------
 -A        Разрешает только ключевые слова ANSI
 -C-       Запрещает вложенные комментарии
 -p-       Устанавливает использование соглашения о связях С
 -i32      Устанавливает минимум 32 значащих символа в
           идентификаторах
 -w-       Выключает все предупреждения, кроме следующего
 -wbei     Включает предупреждение о несоответствии инициализаторов
 -wdcl     Включает предупреждение об объявлениях без типа или
           класса памяти
 -wcpt     Включает предупреждение о немобильных сравнениях
           указателей
 -wdup     Включает предупреждение о дублирующихся не-идентичных
           определениях макроса
 -wsus     Включает предупреждение о подозрительном преобразовании
           указателя
 -wrpt     Включает предупреждение о немобильных преобразованиях
           указателей
 -wvrt     Включает предупреждение о функции void, возвращающей
           значение
 -wbig     Включает предупреждение о слишком большой константе
 -wucp     Включает предупреждение о смешанном использовании
           указателей signed и unsigned char
 -wstu     Включает предупреждение о неопределенных структурах
 -wext     Включает предупреждение о переменных, определенных
           сразу как external и static
 -wfdt     Включает предупреждение об определениях функции,
           использующих typedef
 -----------------------------------------------------------------

      Использование следующих опций запрещено:

 -ms!    Для моделей данных small SS и DS должны совпадать.
 -mm!    Для моделей данных small SS и DS должны совпадать.
 -mt!    Для моделей данных small SS и DS должны совпадать.
 -zGxx   Имя группы BSS не может быть изменено.
 -zSxx   Имя группы данных data не может быть изменено.

      Прочие опции, не упомянутые здесь специально, могут устанав-
 ливаться по вашему желанию.

 2.1.2.2  Семантика аргументов, передаваемых функции main

      Когда программа выполняется в операционной системке DOS вер-
 сий до 3.0, значение argv[0] представляет собой указатель на нуле-
 вой байт. Для версии DOS 3.0 и старше argv[0] указывает на имя
 программы.

      Остальные строки argv указывают на каждый компонент аргумен-
 тов командной строки DOS. Пробельные символы, разделяющие аргумен-
 ты, удаляются, и каждая последовательность непрерывных не-пробель-
 ных символов рассматривается как отдельный аргумент. Строки симво-
 лов в кавычках рассматриваются обычным способом (как одна строка,
 которая может содержать пробелы.)

 2.1.2.3  Что считается интерактивным устройством

      Любое устройства, работающее как консоль.

 2.2.1  Компоненты наборов символов - исходного и времени выполнения

      Наборы символов, исходный и времени выполнения, представляют
 собой расширенный набор символов ASCII, поддерживаемый IBM PC. Лю-
 бой символ, кроме ^Z (Control-Z) может находиться в строковых ли-
 тералах, символьных константах или комментариях.

 2.2.1.2  Состояния сдвига для многобайтных символов

      Многобайтные символы в Turbo C++ не поддерживаются.

 2.2.2  Направление печати

      Печать символов происходит слева-направо, в нормальном для PC
 направлении.

 2.2.4.2  Число битов в символе из набора времени выполнения

      Символ из набора символов времени выполнения имеет длину 8
 битов.

 3.1.2  Число значащих начальных символов идентификатора

      Значащими являются только первые 32 символа, хотя это значе-
 ние может быть изменено при помощи опции командной строки (-l). И
 внешние, и внутренние символические имена имеют одинаковое число
 значащих символов. (Число значащих символов в идентификаторах С++
 не ограничено).

 3.1.2  Учитывается ли регистр во внешних идентификаторах

      Компилятор обычно заставляет компоновщик делать различие меж-
 ду заглавными и строчными буквами. Для того, чтобы подавить учет
 регистра, служит опция командной строки (-l-c).

 3.1.2.5  Представления и множества принимаемых значений для
          различных интегральных типов

 -----------------------------------------------------------------
 Тип             Минимальное значение      Максимальное значение
 -----------------------------------------------------------------
 signed char                     -128                        127
 unsigned char                      0                        255
 signed short                 -32,768                     32,767
 unsigned short                     0                     65,535
 signed int                   -32,768                     32,767
 unsigned int                       0                     65,535
 signed long           -2,147,483,648              2,147,483,647
 unsigned long                      0              4,294,967,295
 -----------------------------------------------------------------

      Все типы char используют для хранения значения 8-битовый байт.

      Все типы short и int используют 2 байта.

      Все типы long используют 4 байта.

      Если задано выравнивание в памяти (-a), все объекты интег-
 ральных типов, кроме char, выравниваются по границе четных байтов.
 Символьные типы не выравниваются никогда.

 3.1.2.5  Представления и множества принимаемых значений для
          различных типов чисел с плавающей точкой

      Для типов с плавающей точкой Turbo C++ Intel 8087 использует
 форматы плавающей точки IEEE. Тип float использует 32-битовый фор-
 мат действительных чисел IEEE. Тип double использует 64-битовый
 формат действительных чисел IEEE. Тип long double использует
 80-битовый расширенный формат действительных чисел IEEE.

 3.1.3.4  Соотношение между наборами символов - исходным
          и времени выполнения

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

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

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

 3.1.3.4 Значение целочисленной константы, которая содержит более
         одного символа, или широкая символьная константа, которая
         содержит более одного многобайтного символа

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

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

      Широкие символьные константы распознаются, но рассматривают-
 ся, как обычные символьные константы. В этом смысле "местом дейст-
 вия" является "С".

 3.2.1.2  Результат преобразования целого в более короткий тип
          целого со знаком, либо результат преобразования целого
          без знака в целое со знаком равной длины, если значение
          не может быть представлено полностью

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

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

      Целое число округляется до ближайшего представимого значения.
                                 31-1
 Например, значение типа long (2 ) преобразуется в значение float
  31
 2  . Разрешение направления округления производится по стандартным
 арифметическим правилам IEEE.

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

      Число округляется до ближайшего представимого значения. Раз-
 решение направления округления производится по стандартным арифме-
 тическим правилам IEEE.

 3.3  Результаты поразрядных операций для целых со знаком

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

 3.3.2.3  Что происходит, когда доступ к компоненту объекта типа
          объединения происходит при помощи компонента другого типа

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

 3.3.3.4  Тип целого числа, предназначенного для хранения максималь-
          ного размера массива

      Для обычного массива это тип unsigned int, а для массивов в
 случае модели данных huge это тип signed long.

 3.3.4  Результат приведения типа указателя в целое и обратно

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

 3.3.5  Знак остатка при целочисленном делении

      Когда только один из операндов отрицателен, остаток также бу-
 дет отрицательным. Если ни один из операндов не отрицателен, или
 оба отрицательны, остаток будет положительным.

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

      Для ближних (near) указателей это тип signed int, а для ука-
 зателей far или huge - это signed long. Тип ptrdiff_t зависит от
 используемой модели памяти. Для малых моделей памяти это тип int,
 а для больших моделей памяти - это тип long.

 3.3.7  Результат сдвига вправо отрицательного интегрального типа
        со знаком

      Отрицательные отрицательные значения со знаком при сдвиге
 вправо расширяются по знаку.

 3.5.1  Степень вероятности фактического размещения в регистрах
        объектов со спецификатором класса памяти register

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

 3.5.2.1  Заполнение и выравнивание компонентов структур

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

 3.5.2.1  Рассматривается ли линейное битовое поле int как signed
          int, или же как unsigned int

      Линейные битовые поля int рассматриваются как имеющие тип
 signed int.

 3.5.2.1  Порядок распределения битового поля в int

      Битовое поле распределяется в направлении от позиции младшего
 бита к позиции старшего бита.

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

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

 3.5.2.2  Интегральный тип, которым представляются значения
          перечислимого типа

      Если нумераторов столько, что хватает типа unsigned char, то
 выбирается этот тип; в противном случае выбирается signed int.

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

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

 3.5.5.3  Что представляет собой доступ к объекту, который
          квалифицирован типом volatile

      Любая ссылка на объект volatile приводит к доступу к самому
 объекту. Произойдет ли доступ к объекту при доступе к смежным ад-
 ресам памяти, зависит от физической конструкции памяти в аппарат-
 ном обеспечении. Для специальной памяти устройств, такой как дисп-
 лейная память, это зависит от конструкции устройства. Для обычной
 памяти PC объекты volatile используются только для такой памяти, к
 которой возможен доступ по асинхронным прерываниям, поэтому доступ
 к смежным объектам не оказывает эффекта.

 3.6.4.2  Максимальное число case-вариантов в операторе switch

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

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

      Все символьные константы, даже константы условных директив,
 используют один и тот же набор символов (времени выполнения).
 Одно-символьная константа будет отрицательной, если это символьный
 тип со знаком signed char (по умолчанию и при -K не запрашивает-
 ся).

 3.8.2  Метод нахождения включаемых исходных файлов

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

 3.8.2  Поддержка задания в кавычках имен включаемых исходных файлов

      Если имя файла задано в кавычках, то поиск файла будет выпол-
 няться в текущей директории. Если файл не найден, то далее Turbo
 C++ будет выполнять поиск файла, как если бы его имя было задано в
 угловых скобках.

 3.8.2  Особенности последовательности символов в именах файлов

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

 3.8.8  Определения __DATE__ и __TIME__ , когда они недоступны

      Дата и время доступны всегда и используют системные дату и
 время DOS.

 4.1.1  Тип операции sizeof, size_t

      Тип size_t  -  unsigned int.

 4.1.1  Символ, отображающий  десятичную точку

      Это точка (.).

 4.1.5  Константа - пустой указатель, в которую расширяется
        макрос NULL

      Int или long 0, в зависимости от модели памяти.

 4.2  Печатаемые диагностические сообщения и поведение при завершении
      функции assert

      Печатается диагностическое сообщение "Assertion failed:выра-
 жение, file имя_файла, line nn", где выражение - это выражение с
 неудачно завершившейся функцией контроля особой ситуации, имя_фай-
 ла - это имя исходного файла, а nn - это номер строки, где выпол-
 нялся контроль.

      После вывода на дисплей данного диагностического сообщения
 вызывается функция abort.

 4.3  Определяемые  реализацией аспекты проверки символов
      и функции задания учета регистра

      Отсутствуют, за исключением описанных в п.4.3.1.

 4.3.1  Наборы символов, проверяемые функциями isalnum, isalpha,
        iscntrl, islower, isprint и isupper

      Первые 128 ASCII-символов.

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

      IEEE NAN (не-число).

 4.5.1  Устанавливают ли математические функции целочисленное
        выражение errno в значение макроса ERANGE в случае
        ошибки отрицательного переполнения

      Нет, только для других ошибок - области переполнения, сингу-
 лярности, переполнения и общей потери точности.

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

      Нет. fmod(x, 0) возвращает 0.

 4.7.1.1  Набор сигналов функции signal

      SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM.

 4.7.1.1  Семантика каждого сигнала, распознаваемого функцией

      См. описание функции signal в Справочнике по библиотеке.

 4.7.1.1  Обработка по умолчанию и обработка при загрузке программы
          каждого сигнала, распознаваемого функцией signal

      См. описание функции signal в Справочнике по библиотеке.

 4.7.1.1  Блокирование сигнала, выполняемое если эквивалент
          signal(sig,SIG_DFL);  не выполнен перед вызовом
          обработчика сигналов

      Эквивалент signal(sig,SID_DFL) выполняется всегда.

 4.7.1.1  Будет ли отменена обработка сигнала по умолчанию при
          получении сигнала SIGILL обработчиком, заданным функции
          signal

      Нет.

 4.9.2  Требуется ли в последней строке текстового потока оконечный
        символ новой строки

      Нет, не требуется.

 4.9.2  Появляются ли при чтении символы пробела, записанные в
        текстовый поток непосредственно перед символом новой
        строки

      Да, появляются.

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

      Не добавляются.

 4.9.3  Устанавливается ли первоначально указатель позиции файла
        потока в режиме добавления (append) в начало или в конец
        файла

      Указатель позиции файла для потока в режиме добавления перво-
 начально помещается в начало файла. Перед каждой операцией записи
 он сбрасывается в конец файла.

 4.9.3  Вызывает ли запись в текстовый поток усечение связанного
        с потоком файла за данной позицией

      Запись 0 байтов может привести, а может и не привести к усе-
 чению файла, в зависимости от буферизации файла. Если файл буфери-
 зован, то перед открытием файла по умолчанию создается буфер с
 размером 512 байт.

 4.9.3  Существуют ли физически файлы нулевой длины

      Да, существуют.

 4.9.3  Может ли один и тот же файл быть открыт неоднократно

      Да, может.

 4.9.4.1  Действие функции remove на открытый файл

      Никакой специальной проверки, является ли файл открытым, не
 выполняется. Ответственность лежит на программисте.

 4.9.4.2  Что произойдет, если файл с новым именем уже существовал
          перед вызовом rename

      rename вернет значение -1, а errno будет установлена в значе-
 ние EEXIST.

 4.9.6.1  Вывод в случае преобразования %p в printf

      В случае ближних моделей данных это четыре шестнадцатиричных
 цифры (XXXX). В случае дальних моделей данных это четыре шестнадца-
 тиричных цифры, двоеточие и еще четыре шестнадцатиричных цифры
 (XXXX:XXXX).

 4.9.6.2  Ввод в случае преобразования %p в fscanf

      См. 4.9.6.1.

 4.9.6.2  Интерпретация символа дефис (-), который не является ни
          первым, ни последним  символом в списке сканирования в
          случае преобразования %[ в fscanf

      См. описание fscanf в Справочнике по библиотеке.

 4.9.9.1  Значение, в которое устанавливается макрос errno функциями
          fgetpos или ftell при неудачном завершении

      EBADF   - Неверный номер файла.

 4.9.10.4  Сообщения, генерируемые perror

 -----------------------------------------------------------------
 Error 0                          Invalid data
 Ошибка 0                         Неверные данные

 Invalid function number          No such device
 Неверный номер функции           Такого устройства нет

 No such file or directory        Attempt to remove current directory
 Такого файла или директории нет  Попытка удалить текущую директорию

 Path not found                   Not same device
 Путь не найден                   Другое устройство

 Too many open files              No more files
 Слишком много открытых файлов    Файлов больше нет

 Permission denied                Invalid argument
 Разрешение не дано               Неверный аргумент

 Bad file number                  Arg list too big
 Неверный номер файла             Список аргументов слишком велик

 Memory arena trashed             Exec format error
 Испорчена память                 Ошибка формата запуска

 Not enough memory                Cross-device link
 Недостаточно памяти              Кросс-компоновка устройств

 Invalid memory block address     Math argument
 Неверный адрес блока памяти      Математический аргумент

 Invalid environment              Result too large
 Неверная операционная среда      Результат слишком велик

 Invalid format                   File already exists
 Неверный формат                  Файл уже существует

 Invalid access code
 Неверный код доступа
 -----------------------------------------------------------------

      См. описание perror в Справочнике по библиотеке.

 4.10.3  Поведение calloc, malloc или realloc, если запрошен
         нулевой размер

      calloc и malloc проигнорируют такой запрос. realloc освободит
 блок.

 4.10.4.1  Поведение функции abort в отношении открытых и временных
           файлов

      Буферы файлов не очищаются, а файлы не закрываются.

 4.10.4.3  Статус, возвращаемый exit при ненулевом значении
           аргумента, EXIT_SUCCESS или EXIT_FAILURE

      Особенные действия не предусмотрены. Статус возвращается в том
 виде, в котором он передан. Статус представлен как signed char.

 4.10.4.4  Набор имен операционной среды и способ изменения значений
           переменных операционной среды при помощи getenv

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

 4.10.4.5  Содержимое и режим обработки строки функцией system

      Строка интерпретируется как команда DOS. Запускается
 COMMAND.COM, и аргумент функции передается ему как команда на вы-
 полнение. Могут быть выполнены любые внутренние команды DOS, а
 также .BAT-файлы и .EXE-программы.

 4.11.4.4  Последовательность сравнения набора символов времени
           выполнения

      Последовательность сравнения набора символов времени выполне-
 ния использует значение символа signed char ASCII.

 4.11.6.2  Содержимое строк сообщений об ошибке, возвращаемых
           strerror

      См. 4.9.10.4.

 4.12.1  Использование локального таймера и хранение времени
         в форме "AM/PM"

      Определяются локальные время и данные PC.

 4.12.2.1  Отсчет времени системными часами

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

 4.12.3.5  Форматы даты и времени

      Turbo C++ реализует форматы ANSI.
Используются технологии uCoz