Illegal use of floating point c ошибка

In C and related languages ^ is the bitwise XOR operator. For exponentiation you need pow() or powf().

Change:

op=(x^1/2+x^2/3+x^3/4)/(x^5/2+x^7/2);

to:

op = (pow(x, 1./2) + pow(x, 2./3) + pow(x, 3./4)) / (pow(x, 5./2) + pow(x, 7./2));

Make sure you #include <math.h>.

Also you might want to get a good introductory book on C and read up on operators and math library functions.

#include <stdio.h>
#include <math.h>

int main()
{
    float x, op;
    printf("Enter the value of x: ");
    scanf("%f", &x);
    op = (pow(x, 1./2) + pow(x, 2./3) + pow(x, 3./4)) / (pow(x, 5./2) + pow(x, 7./2));
    printf("\nFinal op is %f\n", op);
    return 0;
}

LIVE DEMO

  • Forum
  • Beginners
  • Illegal use of floating point error

Illegal use of floating point error

Hi,below is a source code when i compile it compler gives the error «illegal use of floating point» does any one could tell me that where is error.and how to resolve this.

#include<iostream.h>
#include<conio.h>
int main()
{
double gallons,miles,totalgallons=0.0,totalmiles=0.0,average;
cout<<«enter the gallons used(-1 to end):»;
cin>>gallons;
while(gallons |= -1.0 )
{
totalgallons+=gallons;
cout<<«enter the miles driven»;
cin>>miles;
totalmiles+=miles;
cout<<«miles/gallon for this tank was»<<miles<<«\n\enter the gallons used(-1 to end);»;
cin>>gallons;
}
average=totalmiles/totalgallons;
cout<<«\nthe overall average miles/gallon was»
<<average<<endl;
getch();
return 0;
}

Last edited on

while(gallons |= -1.0 )
That’s a bitwise OR assignment operator. You need the «not-equal» operator:
while(gallons != -1.0)
Due to precision nonsense, I’d probably just use this instead:
while (gallons >= 0)

Topic archived. No new replies allowed.

Перечень сообщений

— A —

— B —

— C —

— D —

— E —

— F —

— G —

— H —

— I —

— L —

— M —

— N —

— O —

— P —

— R —

— S —

— T —

— U —

— V —

— W —

— D —

Debug into switch ignored for .COM files

Предупреждение утилиты TLINK

(параметр отладочной информации для файлов .COM игнорируется)

Borland C++ не включает отладочную информацию в файлы .COM.

См. описание параметра /v.

Debug information in module модуль will be ignored

Предупреждение утилиты TLINK

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

Объектные файлы, скомпилированные с включением отладочной

информации, теперь содержат запись о версии. Основная версия в

данной записи выше той, которую в настоящее время поддерживает

компоновщик TLINK, поэтому компоновщик не может сгенерировать

отладочную информацию для данного модуля.

Debug information overflow; try fewer modules withDebug info

Сообщение об ошибке утилиты TLINK

(переполнение отладочной информации; попробуйте включать отладочную информацию в меньшее число модулей)

Слишком много участвующих в компоновке модулей содержат отладочную информацию. Перекомпилируйте программу с меньшим объемом

отладочной информации.

DeclarationDoes 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 operatorDelete (void*) or (void*, size_t)

Сообщение об ошибке этапа компиляции

(описание операцииDelete (void*) или (void*, size_t))

Описание операцииDelete с единственным параметром void* или

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

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

Declare operatorDelete[] (void*) or (void*, size_t)

Сообщение об ошибке этапа компиляции

(описание операцииDelete[] (void*) или (void*, size_t))

Опишите операторDelete с один параметром void и параметром

типа type size_t.

Declare type тип ptior to use in prototype

Предупреждение этапа компиляции

(описание типа тип перед использованием в прототипе)

Когда прототип функции ссылается на не описанный ранее тип

структуры, то описание в прототипе не эквивалентно описанию вне

прототипа. Например:

         int func(struct S *ps)

                     struct s{ /* ... */ }





Так как в области действия прототипа для функции func нет

структуры s, типом параметра ps будет указатель на неопределенную

структуру s и не эквивалентен описываемой позднее структуре s.

Далее это приведет к предупреждениям и сообщениям об ошибках

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

описание структуры s перед прототипом, который на нее ссылается,

или добавить перед любым прототипом, который ссылается на структуру s, неполное описание типа struct s;. Если параметром функции

является struct, а не указатель на struct, то неполное описание

недостаточно. Тогда вы должны поместить описание структуры перед

прототипом.

Default argument value redeclared

Сообщение об ошибке этапа компиляции

(переопределение заданного по умолчанию значения аргумента)

Когда для параметра функции С++ описывается значение по

умолчанию, это значение не может описываться заново, изменяться

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

Default argument value redeclared for parameter параметр

Сообщение об ошибке этапа компиляции:

(для параметра заново описано используемое по умолчанию значение аргумента параметр)

Когда описанный параметр функции С++ имеет используемое по

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

Default expression may not use local variable

Сообщение об ошибке этапа компиляции

(используемое по умолчанию значение не может использовать

локальную переменную)

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

Default outside of switch

Сообщение об ошибке этапа компиляции

(операторDefault вне оператора switch)

Компилятор обнаружил ключевое словоDefault вне оператора

switch. Обычно это вызывается пропущенной фигурной скобкой.

Default value missing

Сообщение об ошибке этапа компиляции

(пропущено используемое по умолчанию значение)

Если в функции С++ объявляется параметр со значением по

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

по умолчанию. В данном объявлении за параметром со значением по

умолчанию следует параметр без умолчания.

Default value missing following parameter параметр

Сообщение об ошибке этапа компиляции

(после параметра пропущено используемое по умолчанию значение)

Все параметры после первого параметра с используемым по

умолчанию значением также должны иметь заданные по умолчанию значения.

DefineDirective needs an identifier

Сообщение об ошибке этапа компиляции

(директивеDefine необходим идентификатор)

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

символы.

symbolDefined in module модуль isDuplicated

Ошибка или предупреждение утилиты TLINK

(идентификатор, определенный в модуле модуль, дублируется)

Имеется конфликт между двумя идентификаторами (общими или

общедоступными). Обычно это означает, что идентификатор определен

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

Delete array size missing ]

Сообщение об ошибке этапа компиляции

(в спецификаторе массива пропущена ])

В спецификаторе массива в операции даты пропущена скобка ].

Destructor cannot beDeclared const or volatile

Сообщение об ошибке этапа компиляции

(деструктор не может описываться как const или volatile)

Деструктор описан как const и/или volatile, а это не допускается.

Destructor cannot have a return type specification

Сообщение об ошибке этапа компиляции

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

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

Destructor for класс is not accessible

Сообщение об ошибке этапа компиляции

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

Деструктор для данного класса имеет тип protected или

private и недоступен из данной точки для разрушения класса. Если

деструктор класса является частным (private), класс не может быть

разрушен и потому не может никогда быть использован. Это наверняка ошибка. Защищенный деструктор (protected) допускает доступ

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

производных классов.

Destructor for класс required in conditional expression

Сообщение об ошибке этапа компиляции

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

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

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

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

явно в виде имя_класса(значение_1,значение_2), либо неявно, некоторыми другими кодами программы. Измените код, чтобы избавиться

от этого временного значения.

Destructor name must match the class name

Сообщение об ошибке этапа компиляции

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

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

В вашем исходном файле ~ предшествует какому-то другому имени.

Divide error

Сообщение об ошибке этапа выполнения

(ошибка деления)

Вы пытаетесь разделить целое значение на 0, например:

        int n = 0;



             n = 2 / n;





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

программа завершает работу.

Division by zero

Сообщение об ошибке этапа компиляции

(деление на ноль)

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

представляющее собой нулевой делитель.

Division by zero

Предупреждение этапа компиляции

(деление на ноль)

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

делителя литеральный ноль.

Division by zero

Сообщение об ошибке утилиты MAKE

(деление на ноль)

Деление или остаток в операторе !if имеет нулевой делитель.

Do statement must have while

Сообщение об ошибке этапа компиляции

(операторDo должен иметь while)

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

ограничивающего ключевого слова while.

имя_файлаDoes not exist -Don’t know how to make it

Фатальная ошибка утилиты MAKE

(файл не существует — неизвестно, как его сформировать)

В последовательности построения указано имя несуществующего

файла, и неизвестно правило, которое позволило бы сформировать

имя файла.

DOS error, ax = число

Сообщение об ошибке утилиты TLINK

(ошибкаDOS, ax = число)

Это происходит, еслиDOS возвращает непредвиденную ошибку. В

результирующем коде ошибки выводится значение регистра ax. Это

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

ошибке, являются read, write, seek и close.

Do-whlle statement missing (

Сообщение об ошибке этапа компиляции

(в оператореDo-while отсутствует ()

В оператореDo компилятор не нашел после ключевого слова

while левой круглой скобки.

Do-whlle statement missing )

Сообщение об ошибке этапа компиляции (в оператореDo-while отсутствует ))

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

правой круглой скобки.

Do-whlle statement missing ;

Сообщение об ошибке этапа компиляции

(в оператореDo-while отсутствует ;)

В условном выражении оператораDo компилятор не нашел точки

с запятой после правой круглой скобки.

Dublicate case

Сообщение об ошибке этапа компиляции

(повторение case)

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

уникальное значение выражения-константы.

Duplicate Handler for type тип1, already had тип2

Сообщение об ошибке этапа компиляции:

(обработчик для типа1 дублируется; уже задан для типа2)

Не допускается иметь два обработчика одного типа.

Duplicate ordinal for exports: строка (знач1) and строка(знач2)

Предупреждение утилиты TLINK

(В операторе export дублируется номер)

Две экспортируемые функции, перечисленные в секции EXPORTS

файла определения модуля определяют то же внутреннее имя, но разное порядковое значение. Задайте одно значение или удалите одну

из них.

— E —

Empty LEDATA record in module модуль

Предупреждение утилиты TLINK

(пустая запись LEDATA в модуле)

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

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

Enum syntaxError

Сообщение об ошибке этапа компиляции

(синтаксическая ошибка вEnum)

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

идентификаторов.

Error changing file buffer size

Сообщение об ошибке утилиты TLIB

(ошибка изменения размера буфера файла)

Утилита TLIB пытается настроить размер буфера файла, используемого при операции чтения или записи в файл, но памяти не хватает. Чтобы исправить ситуацию, может потребоваться освободить

некоторый объем системной памяти.

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

Фатальная ошибка этапа компиляции

(директиваError: сообщение)

Данное сообщение появляется при обработке директивы #error

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

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

Фатальная ошибка утилиты MAKE

(директиваError: сообщение)

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

в сообщении.

Error opening имя_файла

Сообщение об ошибке утилиты TLIB

(ошибка открытия указанного файла)

Утилита TLIB по каким-то причинам не может открыть указанный

файл.

Error opening имя_файла for output

Сообщение об ошибке утилиты TLIB

(ошибка открытия файла для вывода)

TLIB по каким-то причинам не может открыть указанный файл

для вывода. Обычно это вызывается недостатком места на диске для

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

доступный только по чтению.

Error renaming имя_файла to имя_файла

Сообщение об ошибке утилиты TLIB

(ошибка переименования файла)

TLIB строит библиотеку, используя временный файл, а затем

переименовывает временный файл в целевую библиотеку. Ошибка

обычно вызывается нехваткой места на диске.

Error writing output file

Сообщение об ошибке этапа компиляции

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

Ошибка DOS при попытке Borland C++ вывести файл .OBJ, .EXE

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

__except or __finallyExpected following __try

Сообщение об ошибке этапа компиляции

(за __try должно следовать __except или __finally

В С++ за блоком __try должен следовать блок обработки __except или __finally.

Exception handling variable may not be used there

Сообщение об ошибке этапа компиляции

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

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

исключительной ситуации, которое ограничивается конкретной конструкцией обработки, например, GetExceptionCode().

Exception specification not allowed here

Сообщение об ошибке этапа компиляции

(спецификация исключительной ситуации здесь не допускается)

Описания типа указателя на функцию не должны содержать спецификаций особых ситуаций.

Explicit stacks are ignored in PE images

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

(явные стеки в образах PE игнорируются)

32-разрядные приложения Windows имеют формат приложений PE

без явного указания стеков. Сегмент стека компонуется с образом,

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

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

стек будет операционная система.

Export идентификатор is duplicated

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

(экспортируемый идентификатор дублируется)

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

ExpressionExpected

Сообщение об ошибке этапа компиляции

(требуется выражение)

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

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

Expression of scalar typeExpected

Сообщение об ошибке этапа компиляции

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

Унарные операции отрицания (!), увеличения (++) и уменьшения

(—) требуют выражений скалярного типа. Допустимыми являются

только типы char, short, int, long,Enum, float, double и long

double и типы указателей.

Expression syntax

Сообщение об ошибке этапа компиляции

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

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

серьезную ошибку. Наиболее часто она встречается, если подряд

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

Expression syntaxError in !if statement

Сообщение об ошибке утилиты MAKE

(синтаксическая ошибка выражения в операторе !if)

Выражение в операторе !if имеет неправильный вид: оно содержит неравное количество открывающих и закрывающих скобок, лишний

или пропущенный оператор или пропущенную или лишнюю константу.

причина -Extended dictionary not created

Предупреждение утилиты TLIB

(расширенный словарь не создан)

Утилита TLIB не могут сформировать расширенный словарь из-за

причины, указанной в сообщении.

Extended dictionary bot found in library библиотека,Extended dictionaries ignored

Предупреждение утилиты TLINK

(в указанной библиотеке на найден расширенный словарь; расширенные словари игнорируются)

Параметр /E TLINK требует, чтобы все библиотеки имели расширенные словари. Если в ходе компоновки обнаруживается библиотека

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

Extern variable cannot be initialized

Сообщение об ошибке этапа компиляции

(переменнаяExtern не может быть инициализирована)

Класс памятиExtern применительно к переменной означает, что

переменная здесь объявляется, но не определяется — распределение

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

Extern идентификатор was not qualified with __import in module модуль

Предупреждение утилиты TLINK

(внешний идентификатор не описан в модуле с помощью __import)

В 32-разрядных приложениях Windows, ссылающихся на импортируемые идентификаторы, требуется косвенное указание на получение

данных. В вызовах это автоматически обрабатывается компоновщиком.

В ссылках на импорт DATA эту косвенную связь должен генерировать

компилятор (иначе приложение будет работать некорректно), а для

этого идентификатор должен описываться с __import.

Extra argument in template class name шаблон

Сообщение об ошибке этапа компиляции

(лишний аргумент в шаблоне имени класса)

Шаблон имени класса задает слишком много фактических значений для его формальных параметров.

Extra parameter in call

Сообщение об ошибке этапа компиляции

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

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

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

Сообщение об ошибке этапа компиляции

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

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

— F —

Failed to locate DPMI server (MPMI16BI.OVL)

Failed to locate protected mode loader (DPMILOAD.EXE)

Сообщение об ошибке этапа компиляции

(не найден сервер DPMI)

Убедитесь, что файлы MPMI16BI.OVL находится в каком-либо

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

Failed to locate protected mode loader (DMPILOAD.EXE)

Фатальная ошибка командной строки:

(не найден загрузчик защищенного режима)

Убедитесь, что файл DMPILOAD.EXE находится в каком-либо указанном в маршруте каталоге, или в том же каталоге, что и командное средство защищенного режима, которое вы пытаетесь использовать.

Failed read from имя_файла

Сообщение об ошибке утилиты TLINK

(чтение из файла невозможно)

Компоновщик не может прочитать данный файл.

Failed write from имя_файла

Сообщение об ошибке утилиты TLINK

(запись в файла невозможна)

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

__far16 may be used with __pascal or __cdecl

Сообщение об ошибке этапа компиляции

(__far16 может использоваться __pascal или __cdecl)

Для вызовов функций или ссылки на данные в 16-разрядной DLL

вы использовали __far16, но такие функции и данные могут модифицироваться только с помощью __pascal или __cdecl.

File must contain at least one external declaration

Сообщение об ошибке этапа компиляции

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

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

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

File name too long

Сообщение об ошибке этапа компиляции

(слишком длинное имя файла)

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

79 символов.

File name too long

Сообщение об ошибке этапа компиляции

(имя файла имеет слишком большую длину)

Имя файла, заданное в директиве !include, имеет слишком

большую длину для обработки ее обслуживающей программой МAKE 512 байт (размер внутреннего буфера).

имя_файла file not found

Предупреждение утилиты TLIB

(указанный файл не найден)

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

добавить несуществующий объект, но библиотека создана.

имя_файла file not found

Сообщение об ошибке утилиты TLIB

(указанный файл не найден)

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

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

сообщает, что библиотека не существует, то при компиляции исходного модуля могли быть ошибки. Выполнение команд Compile Make или

Compile Build должно помочь избавиться от ошибки, или определить,

где существует ошибка.

имя_файла(имя_строки): File read error

Сообщение об ошибке утилиты TLINK

(ошибка чтения файла)

При чтении программой TLINK файла определения модуля возникла ошибка DOS. Это обычно указывает не преждевременный конец файла.

Fixup to zero length segment in module модуль

Сообщение об ошибке утилиты TLINK

(корректировка в сегмент с нулевым размером в указанном модуле)

Указывает на некорректную ссылку в объектном коде (которую

TLINK должен скорректировать во время компоновки) на код или данные.

Fixup owerflow at адрес, target=адрес

Сообщение об ошибке утилиты TLINK

(переполнение корректировок по указанному адресу)

Некорректные данные или ссылка на код в объектном файле, который компоновщик должен корректировать на этапе компоновки.

Причиной часто бывает несоответствие моделей памяти. Чаще

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

обращение к данным или ссылку данных на функцию. В любом случае

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

В программе на языке Ассемблера переполнение корректировок

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

другом сегменте.

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

ошибки, или вы программируете на языке высокого уровня, отличном

от Borland C++, то эта ошибка может вызываться другими причинами.

В Borland C++ данная ошибка может генерироваться, если вы используете сегменты и имена групп, отличные от используемых для данной

модели памяти по умолчанию.

Floating point error: Divide by 0

Floating point error: Domain

Floating point error: Overflow

Сообщение об ошибке этапа выполнения

(ошибка операции с плавающей точкой: деление на 0 или переполнение)

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

означает, что результат равен в точности +INF или -INF (плюс или

минус неопределенность), например для операции 1.0/0.0. Domain

означает, что результат не является числом, а переполнение — на

потерю значимости, например в случае присваивания 1e20*1e20 переменной типа double.

Floating point error: Partial loss of precision

Сообщение об ошибке этапа выполнения

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

Эта особая ситуация по умолчанию маскируется, и сообщения об

ошибках не выдаются. Потери точности игнорируются. Отменить маску

можно, вызвав _control87.

Floating point error: Underflow

Сообщение об ошибке этапа выполнения

(ошибка операции с плавающей точкой: потеря значимости)

Эта особая ситуация по умолчанию маскируется, и сообщения об

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

Floating point error: Stack fault

Сообщение об ошибке этапа выполнения

(ошибка операции с плавающей точкой: сбой в стеке)

Это сообщение указывает на выход за границы стека плавающей

точки. В нормальных условиях оно не появляется и поэтому может

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

регистров, либо неправильное объявление функции с плавающей точкой.

Этой ошибки можно избежать, маскируя особые ситуации таким

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

signal или _control87.

For statement missing (

Сообщение об ошибке этапа компиляции

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

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

после ключевого слова for.

For statement missing )

Сообщение об ошибке этапа компиляции

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

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

For statement missing ;

Сообщение об ошибке этапа компиляции

(в операторе for отсутствует ;)

В операторе for компилятор не нашел точки с запятой после

одного из выражений.

Friend must be functions or classes

Сообщение об ошибке этапа компиляции

(«друзья» должны быть функциями или классами)

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

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)

В Си стандарта ANSI тело функции не может определяться с помощью typedef с функцией Type.

Function функция cannot be static

Сообщение об ошибке этапа компиляции

(функция «функция» не может быть статической)

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

Function функция should have a prototype

Сообщение об ошибке этапа компиляции

(функция «функция» должна иметь прототип)

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

В Си int foo(); не является прототипом, а int foo(int); является, также как и int foo(void);. В С++ int foo(); является

прототипом, также как и int foo(void);. В Си прототипы рекомендуется иметь для всех функций. В С++ прототипы для всех функций

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

тело функции) служит как прототип, если стоит перед любым другим

упоминанием функции.

Function should return a value

Предупреждение этапа компиляции

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

Данная функция была описана (возможно неявно) как возвращающая значение. Был обнаружен оператор return без возвращаемого

значения или конец функции без оператора return. Возвращайте значение или описывайте функцию как void.

Functions функция_1 and функция_2 both use the same dispatch number

Сообщение об ошибке этапа компиляции

(обе функции используют один номер диспетчеризации)

Ошибка диспетчеризуемой виртуальной таблицы (DDVT). При переопределении динамически диспетчеризуемой функции в производном

классе используйте тот же индекс диспетчеризации.

Function cannot return array of functions

Сообщение об ошибке этапа компиляции

(функция не может возвращать массив функций)

Функция не может возвращать массив функций. Допускается возврат указателей или ссылок на массивы.

Functions containing local destructors are not expanded

inline in function функция

Предупреждение этапа компиляции

(функции, содержащие локальные деструкторы не могут быть

встраиваемыми функциями)

Вы создали встраиваемую функцию, для которой Borland C++

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

встраиваемых функций.

Functions containing резервируемое_слово are not expanded inline

Предупреждение этапа компиляции

(функции, содержащие резервируемое_слово не могут быть

подставляемыми)

Функции, содержащие резервируемые слова do, for, while,

goto, switch, break, continue и case, не могут быть подставляемыми, даже при наличии задания их как inline. Функция может использоваться, но будет рассматриваться как обычная статическая (не глобальная) функция. Копия этой функции будет находиться в любой

единице компиляции, где она вызывается.

Functions may not be part of a struct or union

Сообщение об ошибке этапа компиляции

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

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

типом функции, а не указателя функции. Функции в качестве полей

разрешены только в С++.

— G —

General error

Сообщение об ошибке утилиты TLINK

(общая ошибка)

TLINK выводит максимум информации о том, что происходит во

время неизвестной фатальной ошибки.

General error in library file имя_файла in module модуль near module file offsef Oxyyyyyyyy

Сообщение об ошибке утилиты TLINK

(общая ошибка в библиотечном файла в модуле модуль, смещение

Oxyyyyyyyy)

TLINK выводит максимум информации о том, что происходит во

время неизвестной фатальной ошибки.

General error in module модуль near module file offsef Oxyyyyyyyy

Сообщение об ошибке утилиты TLINK

(общая ошибка в модуле модуль, смещение Oxyyyyyyyy)

TLINK выводит максимум информации о том, что происходит во

время неизвестной фатальной ошибки.

Global anonimous union not static

Сообщение об ошибке этапа компиляции

(глобальное анонимное объединение не является статическим)

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

Goto bypassed initialization of local variable

Сообщение об ошибке этапа компиляции

(конструкция goto обошла инициализацию локальной переменной)

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

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

Goto into exception handler is not allowed

Сообщение об ошибке этапа компиляции

(переход в обработчик особой ситуации не допускается)

Недопустимый переход в блок try или подключенный к нему обработчик особой ситуации.

Goto statement missing label

Сообщение об ошибке этапа компиляции

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

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

Group группа exceeds 64К

Сообщение об ошибке утилиты TLINK

(группа «группа» превышает 64К)

При комбинировании сегментов размер группы превысил 64К.

Group overflowed maximum size: группа

Сообщение об ошибке этапа компиляции

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

64.

Group группа_1 overlaps group группа_2

Предупреждение утилиты TLINK

(группа_1 перекрывает группу_2)

Это означает, что TLINK обнаружил вложенные группы. Данное

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

при компоновке программ Windows.

— H —

Handler for тип_1 hidden by previous handler for тип_2

Предупреждение компилятора

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

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

Сообщение об ошибке этапа компиляции

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

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

Hexadecimal value contains more than 3 digits

Предупреждение этапа компиляции

(шестнадцатиричное значение содержит более 3 цифр)

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

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

Это сообщение выдается, когда шестнадцатиричная управляющая последовательность имеет много ведущих нулей (например, «\x00045»).

Старые версии Си интерпретировали бы данную строку иначе.

функция_1 hides virtual function функция_2

Предупреждение этапа компиляции

(функция_1 скрывает виртуальную функцию_2)

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

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

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

последующим производным классам.

— I —

Identifier expected

Сообщение об ошибке этапа компиляции

(требуется идентификатор)

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

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

двойного двоеточия (::) и после резервируемого слова operator при

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

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

Сообщение об ошибке этапа компиляции:

(идентификатор «идентификатор» не может иметь квалификатор

типа)

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

исключением определения на уровне файла) или локальных переменных

и параметров функций, либо для элементов класса, за исключением

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

If statement missing (

Сообщение об ошибке этапа компиляции

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

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

If statement missing )

Сообщение об ошибке этапа компиляции

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

В операторе if компилятор не нашел правой (закрывающей)

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

If statement too long

Сообщение об ошибке утилиты MAKE

(слишком длинный оператор if)

Оператор if превышает 4096 символов.

Ifdef statement too long

Сообщение об ошибке утилиты MAKE

(слишком длинный оператор ifdef)

Оператор ifdef превышает 4096 символов.

Ifndef statement too long

Сообщение об ошибке утилиты MAKE

(слишком длинный оператор ifndef)

Оператор ifndef превышает 4096 символов.

Ignored модуль, path is too long

Предупреждение утилиты TLIB

(модуль игнорируется, слишком длинный маршрут)

Маршрут к заданному файлу .obj или .lib превышает 64 символа. Максимальный маршрут в TLIB не может превышать 64 символа.

Illegal ACBP byte in SEGDEF

Сообщение об ошибке утилиты TLINK

(недопустимый байт ACBP в SEGDEF)

Обычно это вызывается ошибкой транслятора.

Illegal character in constant expression выражение

Сообщение об ошибке утилиты MAKE

(неверный символ в константном выражении)

Обслуживающая программа МAKE обнаружила некоторый символ,

недопустимый для выражения-константы. Если этим символом является

буква, то это определяет (вероятно) идентификатор, где имеется

синтаксическая ошибка.

Illegal component to GRPDEF

Сообщение об ошибке утилиты TLINK

(недопустимый компонент GRPDEF)

Обычно это вызывается ошибкой транслятора.

Illegal group definition: группа

Сообщение об ошибке утилиты TLINK

(недопустимое определения группы)

Данная ошибка вызывается неверно сформированной записью

GRPDEF в файле .OBJ. Это может вызываться «самодельными» файлами

.OBJ или ошибкой транслятора, использованного для генерации файла

.OBJ. Если это происходит в файле, скомпилированном в Borland

C++, перекомпилируйте файл. При сохранении ошибки обратитесь к

фирме Borland.

Illegal initialization

Сообщение об ошибке этапа компиляции

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

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

или минус константа.

Illegal octal digit

Сообщение об ошибке этапа компиляции

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

Компилятор встретил восьмеричную константу с недопустимой в

восьмеричных числах цифрой (8 или 9).

Illegal parameter to __emit__

Сообщение об ошибке этапа компиляции

(недопустимый параметр __emit__)

Вы указали аргумент emit, который не является константой или

адресом.

Illegal pointer substraction

Сообщение об ошибке этапа компиляции

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

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

Illegal structure operation

Сообщение об ошибке этапа компиляции

(недопустимая операция со структурой)

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

получения адреса (&) или присваивания (=), либо передаваться в

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

структуру, используемую с какой-либо другой операцией.

Illegal to take address of bit field

Сообщение об ошибке этапа компиляции

(недопустимо получать адрес битового поля)

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

Illegal use of floating point

Сообщение об ошибке этапа компиляции

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

Операнды с плавающей точкой недопустимы в операциях сдвига,

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

этих операций обнаружил число с плавающей точкой.

Illegal use of member pointer

Сообщение об ошибке этапа компиляции

(недопустимое использование указателя-элемента)

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

Illegal use of pointer

Сообщение об ошибке этапа компиляции

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

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

Ill-formed pragma

Предупреждение этапа компиляции

(неправильно оформленная директива pragma)

Директива pragma не соответствует ни одной из ожидаемых компилятором директив этого рода.

Image base address must be a multiple of 0x10000

Сообщение об ошибке утилиты TLINK

(базовый адрес модуля должен быть кратен 0x10000)

Базовый адрес должен выравниваться на границу 64К.

Images fixed at specific addresses typically will not run under Win32s

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

(Фиксированные на конкретные адреса модули обычно в Win32

обычно не работают)

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

Implicit conversion of тип_1 to тип_2 not allowed

Сообщение об ошибке этапа компиляции

(неявное преобразование типа_1 к типу_2 не допускается)

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

указателя на производный класс, значение указателя должно неявно

преобразовываться, чтобы указывать на соответствующий базовый

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

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

Сообщение об ошибке этапа компиляции

(неправильное использование typedef)

Там, где в выражении должна использоваться переменная, указан typedef идентификатор. Проверьте описание идентификатора и

возможные опечатки.

имя_файла(номер_строки): Incompatible attribute

Сообщение об ошибке утилиты TLINK

(несовместимый атрибут)

Компоновщик TLINK обнаружил в операторе CODE или DATA несовместимый атрибут сегмента. Например, PRELOAD и LOADONCALL одновременно не могут быть атрибутами одного и того же сегмента.

Incompatible type conversion

Сообщение об ошибке этапа компиляции

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

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

Incorrect command-line argument: XXX

Сообщение о фатальной ошибке утилиты MAKE

(Неверный аргумент в командной строке: ХХХ)

Данная ошибка появляется, если обслуживающая программа МAKE

выполняется с неверным аргументом в командной строке.

Incorrect command-line option: параметр

Сообщение об ошибке этапа компиляции

(Неправильный параметр командной строки: параметр)

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

Incorrect configuration file option: параметр

Сообщение об ошибке этапа компиляции

(Неправильный параметр файла конфигурации: параметр)

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

Incorrect number format

Сообщение об ошибке этапа компиляции

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

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

точку.

Incorrect use of default

Сообщение об ошибке этапа компиляции

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

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

Incorrect version of RLINK32.DLL

Сообщение об ошибке утилиты TLINK

(некорректная версия RLINK32.DLL)

Проверьте версию указанной DLL.

Initializing enumeration type with тип

Предупреждение этапа компиляции

(инициализация перечислимого типа указанным типом)

Вы пытаетесь инициализировать переменную enum другим типом.

Например:

         enum count { zero, one, two } x = 2;

что приведет к данному предупреждению, поскольку 2 имеет тип int,

а не enum count. При присваивании или инициализации типов enum на

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

Это на самом деле ошибка, но она сводится к предупреждению,

чтобы программа могла работать.

Inline assembly not allowed

Сообщение об ошибке этапа компиляции

(встроенное ассемблер не разрешается)

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

Inline assembly not allowed in inline and template function

Сообщение об ошибке этапа компиляции

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

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

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

ассемблерные коды.

Int and string types compared

Сообщение об ошибке утилиты MAKE

(сравниваются строковый и целый типы)

В выражении !if или !elseif вы пытаетесь сравнить целочисленный операнд со строковым.

Internal linker error код_ошибки

Сообщение об ошибке утилиты TLINK

(внутренняя ошибка компоновщика)

Ошибка во внутренней логике TLINK. На практике такая ошибка

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

Invalid combination of opcode and operands

Сообщение об ошибке этапа компиляции

(Неверная комбинация кода операции и операндов)

Ассемблерный код операции не принимает данную комбинацию операндов. Возможные причины:

  • Слишком много или мало операндов для данного кода опера ции, например INC AX,BX или MOV AX.
  • Число операндов верное, но их типы не соответствуют коду

    операции, например DEC 1, MOV AX,CL или MOV 1,AX.

Invalid entry point offset

Сообщение об ошибке утилиты TLINK

Данное сообщение выводится только при компоновке модулей с

32-битовыми записями. Это означает, что смещение начальной точки

входы программы превышает предел DOS в 32К.

Invalid indirection

Сообщение об ошибке этапа компиляции

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

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

непустого (не void) указателя.

Invalid limit specified for code segment packingv

Сообщение об ошибке утилиты TLINK

(для упаковки сегмента кода задано недопустимое ограничение)

Данная ошибка происходит, если вы использовали параметр /P

или команду интегрированной среды Options Linker …Pack code

segments и задаете предельное значение размера, выходящее за допустимый диапазон. Чтобы значение было допустимым, оно должно лежать в пределах от 1 до 65536 байт (по умолчанию 8192).

Invalid macro argument separator

Сообщение об ошибке этапа компиляции

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

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

Invalid page size value igored

Предупреждение утилиты TLIB

(недопустимое значение размера страницы игнорируется)

Задано недопустимое значение размера страницы. Размер страницы должен быть степенью числа 2 и не может быть меньше 16 или

больше 32768.

Invalid pointer addition

Сообщение об ошибке этапа компиляции

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

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

Invalid register combination (e.g. [BP+BX])

Сообщение об ошибке этапа компиляции

(Неверная комбинация регистров (например, [BP+BX]))

Допустимыми комбинациями индексных регистров являются [BX],

[BP], [SI], [DI], [BX+SI], [BX+DI], [BP+SI] и [BP+DI]. Другие

комбинации индексных регистров (например, [AX], [BP+BX] и

[SI+DX]) недопустимы.

Локальные переменные (переменные, объявленные в процедурах и

функциях) обычно выделяются в стеке и доступны через регистр BP.

Ассемблер автоматически прибавляет [BP] при ссылках к таким переменным, поэтому даже хотя конструкция типа Local[BX] (где Local это локальная переменная) кажется верной, это не так, поскольку

последний операнд на самом деле станет равным Local[BP+ BX].

Invalid segment definition

Сообщение об ошибке утилиты TLINK

(недопустимое определение сегмента в указанном модуле)

Компилятором создан неверный объектный файл. Если это происходит в файле, созданном Borland C++, перекомпилируйте файл. Если

ошибка остается, свяжитесь с Borland.

Invalid template argument list

Сообщение об ошибке этапа компиляции

(недопустимый список аргументов шаблона)

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

(<>). Найден недопустимый список аргументов шаблона.

Invalid template qualified name шаблон::имя

Сообщение об ошибке этапа компиляции

(недопустимое уточненное имя шаблона)

При определении элемента шаблона класса фактические аргументы имени шаблона класса, которые указываются в левом операнде

операции ::, должны соответствовать формальным аргументам класса

шаблона, например:

         template <class T> class X

 {

 VOID F();

 };

 template <class T> void X<T>::f() {}

Следующее недопустимо:

 template <class T> void X<int>::f() {}

Invalid use of dot

Сообщение об ошибке этапа компиляции

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

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

операнд.

Invalid use of template шаблон

Сообщение об ошибке этапа компиляции

(недопустимое использование шаблона)

Вне определения шаблона не допускается использование имени

шаблона класса без указания фактических параметров. Например, вы

можете использовать vector<int>, но не vector.

Irreducible expression tree

Фатальная ошибка этапа компиляции

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

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

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

вы получите такое сообщение, уведомьте об этом фирму Borland.

базовый_класс is indirect virtual base class of класс

Сообщение об ошибке этапа компиляции

(базовый_класс является недопустимым виртуальным базовым

классом для класса класс)

Невозможно создать указатель на элемент С++ заданного виртуального класса. Была попытка создания такого указателя (непосредственно или через приведение). См. описание параметра -Vv в

«Руководстве пользователя».

идентификатор is assigned a value that is never user

Предупреждение этапа компиляции

Переменная встречается в присваивании, но не используется в

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

что компилятор обнаружил закрывающую фигурную скобку.

идентификатор is declared as both external and static

Предупреждение этапа компиляции

(идентификатор объявлен сразу как external и static)

Данный идентификатор появился в объявлении, неявно или явно

обозначающем его как global или external, и кроме того, в объявлении, обозначающем его как static. Идентификатор в таком случае

считается static. Проверьте все описания данного идентификатора.

идентификатор is declared but never used

Предупреждение этапа компиляции

(идентификатор описан, но не используется)

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

находится в начале этого оператора или функции.

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

Сообщение об ошибке этапа компиляции

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

Конструктор класса С++ класс пытается вызвать конструктор

базового класса конструктор, либо вы пытаетесь изменить права

доступа класс::конструктор. Конструктор не относится к базовому

классу класс. Проверьте объявления.

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

Сообщение об ошибке этапа компиляции

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

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

структуры, в то время как он не является элементом структуры.

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

идентификатор is not a non-static data member and can’t be initialized here

Сообщение об ошибке этапа компиляции

В инициализаторах инициализироваться конструктором могут

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

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

Сообщение об ошибке этапа компиляции

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

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

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

тип is not a polimorphic class type

Сообщение об ошибке этапа компиляции

(тип не является типом полиморфического класса)

Dynamic_cast использовалось с указателем на класс, который

компилировался с запрещенным параметром -RT.

идентификатор is not a public base class of тип_класса

Сообщение об ошибке этапа компиляции

Правый операнд операции .*, ->* или ::operator не был указателем на элемент класса, который идентичен (или неоднозначен)

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

имя_файла is not a valid library

Предупреждение утилиты TLINK

(файл не является допустимой библиотекой)

Данный файл не является библиотечным модулем.

элемент is not accessible

Сообщение об ошибке этапа компиляции

(элемент недоступен)

Вы пытаетесь сослаться на элемент класса С++, который имеет

атрибут доступа private или protected и недоступен из данной

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

при этом аргументы совпадают с аргументами недоступной функции.

Перед проверкой доступности всегда выполняется проверка разрешения переопределения. Если проблема именно в этом, то для выбора

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

типа для одного или более параметров.

Назад | Содержание | Вперед

Hi,

Please find my code pasted below. The code gives an error saying «Illegal use of floating point» at lines 224, 231, 238. The specified line numbers are commented using /*..*/ and are left aligned in the page. Basically what I’m trying to do is, to write the values from a single-linked list to a file after evaluating certain comparisons and expressions. Here is the code.

extern»C» {
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
}
void setnum(void);
int getnum(void);
//Two different structures have been used bcos data in data_cur.txt needs
//only two data — name and cur_exp.
//whereas data.txt needs all the data which is again used for final calculation
struct account_cur
{
 char *name;
 float cur_exp;
 };
struct account_data
{
  struct account_cur  *base_class;
  float cur_exp,prev_debit , prev_credit, perhead_exp ;
 struct account_data *next;
 };

typedef struct account_data acc_data;
//typedef struct account_cur acc_cur;
display(acc_data **);
void add(acc_data **);
calculate(acc_data *);
int main()
{
int i;
clrscr();
acc_data *list_acc_data;

clrscr();
//Print the various options available to the user
printf(«1. Add records\n»);
printf(«2. View records\n»);
printf(«3. Calculate\n»);
printf(«4. Who spends the most\n»);
printf(«5. Graphical representation\n»);
printf(«6. Add/Delete a member\n»);
scanf(«%d», &i);
clrscr();
switch(i)
 {
   case 1: add(&list_acc_data);
         break;
   case 2: clrscr();
   display(&list_acc_data);
         break;
   case 3: calculate(list_acc_data);
         break;
   case 4:
   case 5:
   case 6: setnum();
         break;
   default:
   printf(«Input data unknown\n»);
  };
getch();
return(0);
}
display(acc_data **list_ptr)
 {
  FILE *fp_cur,*fp_data;
  int i,num;
  acc_data *temp,*new_blk;
  temp = *list_ptr;
  fp_data = fopen(«c:\\tcplus\\tc\\data.txt», «r»);
  //if (fp_cur==NULL)
   //printf(«Unable to open file data_current.txt»);
  if (fp_data == NULL)
   printf(«Unable to open file data.txt»);
  num = getnum();
  for(i=0;i<=num;i++)
   {
   new_blk = (acc_data *)malloc(sizeof(acc_data));
   fscanf(fp_data,»%s %f %f\n», new_blk->base_class->name, new_blk->prev_debit, new_blk->prev_credit);
   new_blk->next == NULL;
   if (*list_ptr == NULL)
     {
       temp = new_blk;
       *list_ptr = temp;
     }
    else
     {
      temp->next = new_blk;
      temp = temp->next;
     }
   }
  fclose(fp_data);
   getch();

/*    while(list_ptr != NULL)

    {
      printf(«\n %s» ,list_ptr->base_class->name);
      list_ptr  = list_ptr->next;
     }*/

  }
 void add(acc_data **list_ptr)
 {
   FILE *fp_cur;
   acc_data *temp, *new_blk;
   temp = *list_ptr;
   int i,number;
   number = getnum();
   //Point to ponder: Everytime when cur_exp is input the previous data should be overwritten
   //Hence the file is opened in write mode.
   fp_cur = fopen(«c:\\tcplus\\tc\\data_current.txt»,»w»);
   if(fp_cur==NULL)
   printf(«Error opening file\n»);
   for(i=1;i<=number;i++)
   {
        new_blk = (acc_data *)malloc(sizeof(acc_data));
        printf(«\nEnter the name of person %d», i);
        new_blk->base_class->name = (char *)malloc(30); //allocate memory to name
        scanf(«%s»,new_blk->base_class->name);  //This part gets written correctly
        printf(«\n Enter the current expenditure of %s», new_blk->base_class->name);
        scanf(«%f»,&new_blk->base_class->cur_exp);
        fprintf(fp_cur,»%s     %2f\n «,new_blk->base_class->name, new_blk->base_class->cur_exp);
        new_blk->next = NULL;
        if(*list_ptr == NULL)
         {
         temp = new_blk;
         *list_ptr = temp;
        }
        else
         {
         temp->next = new_blk;
         temp = temp->next;
       }
  fclose(fp_cur);
   }
   }
   // the following lines were added to compensate for the disinclusion of
   //the floating point library by the borland or tc complier.
   //Refer documentation for more details
   static void forcefloat(float *p)
    {
     float f = *p;
     forcefloat(&f);
     }

   void setnum()
     {
       FILE *fp_stat;
       int num;
       fp_stat = fopen(«c:\\tcplus\\tc\\statistics.txt»,»w»);
       if(fp_stat ==NULL)
       printf(«Unable to open file statistics.txt»);
       else
      {
       printf(«Enter the number of people in the house»);
       scanf(«%d»,&num);
       fprintf(fp_stat,»Number of people in the house = %d»,num);
       fprintf(stdout,»The number of people in the house is now set to %d», num);
       printf(«\n press any key to continue…»);
       getch();
      }
    }

    int getnum()
     {
       FILE *fp_stat;
       int num;
       fp_stat = fopen(«c:\\tcplus\\tc\\statistics.txt»,»r»);
       if(fp_stat ==NULL)
       printf(«Unable to open file statistics.txt»);
       else
      {
        fscanf(fp_stat,»%d»,&num);
        fprintf(stdout,»Number of people in the house = %d»,num);
      }
      return(num);
       }
     calculate(acc_data *list_ptr)
      {
       acc_data *temp,*new_blk;
       FILE *fp_cur, *fp_data;
       int number,i;
       number = getnum();
       float total = 0, average,debit, credit,curexp;
       char *name;
       temp = list_ptr;
       fp_cur  = fopen(«c:\\tcplus\\tc\\data_current.txt»,»r+»);
       fp_data = fopen(«c:\\tcplus\\tc\\data.txt»,»r+«);
       if(fp_cur ==NULL || fp_data ==NULL)
         printf(«\nUnable to open the required files for calucation»);
       else
        {
         for(i = 1; i<=number; i++)
         {
          new_blk = (acc_data *) malloc(sizeof(acc_data));
          fscanf(fp_cur,»%s %f %f», new_blk->base_class->name, &new_blk->base_class->cur_exp);
          fscanf(fp_data,»%f %f»,new_blk->prev_debit,new_blk->prev_credit);
          total = total + new_blk->base_class->cur_exp;
           if(list_ptr == NULL)
            {
            temp = new_blk;
            new_blk->next = NULL;
            }
           else
            {
            temp->next = new_blk;
            temp = temp->next;
             }

           }
           fclose(fp_data);

        average = total/5;
        temp = list_ptr;
        fp_data = fopen(«c:\\tcplus\\tc\\data.txt»,»w»);
        for(i=1;i<=number;i++)
         {
           while(temp->next != NULL)
             {
             if(temp->base_class->cur_exp == average)
                {
                 temp->prev_debit = 0.0;
                 temp->prev_credit = 0.0;
 /*line no. 224 */                 fprintf(fp_data,(«%s %2f %2f»,temp->base_class->name, temp->prev_debit, temp->prev_credit));//error: Illegal use of floating point
                 }
               else if(temp->base_class->cur_exp > average)
                 {
                  debit = 0;
                  credit = credit + (temp->base_class->cur_exp — average);
                  temp->prev_credit = credit;
/*line no. 231*/                  fprintf(fp_data, («%s %f %f»,temp->base_class->name,temp->prev_debit, temp->prev_credit));
                   }
                else
                 {
                  credit = 0;
                  debit = debit + (average-temp->base_class->cur_exp);
                  temp->prev_debit = debit;
/*line no. 238*/                  fprintf(fp_data, («%d %f %f»,temp->base_class->name, temp->prev_credit, temp->prev_credit));
                  }
                }
              }
             }
            }

————-
Thankyou.
————-

  • Remove From My Forums
  • Question

  • /*where is that error? how do i correct it?*/

    Code Block

    #include<iostream.h>
    #define Length 5
    #include<math.h>
    void main()
    {
     float Temp[Length];
     void GetArray(float [], int);
     void PutArray(float [], int);
     float Mean(float [], int);
     float SDev(float [], int);
     GetArray(Temp, Length);
     PutArray(Temp, Length);
     Mean = Mean(Temp, Length);
     cout<<«\nAverage Temperature»<<Mean;
     cout<<«\nStanard Deviation»<<SDev(Temp, Length);
    }
    void GetArray(float Value[], int Len)
    {
     int I;
     cout<<«Enter values (one per line)\n»<<Len;
     for(I=0; I<Len; I++)
     cin>>Value[I];
    }
    void PutArray(float Value[], int Len)
    {
     int I;
     cout<<«The array contains value:»<<Len;
     for(I=0;I<Len;I++)
     cout<<Value[I];
    }
    float Mean(float Value[], int Len)
    {
     float Sum;
     int I;
     for(I=0; I<Len; I++)
     Sum += Value[I];
     return(Sum/Len);
    }
    float SDev(float Value[], int Len)
    {
     int I;
     float SqSum=0, m=Mean(Value, Len);
     for(I=0;I<Len;I++)
     SqSum += pow(Value[I]-m, 2);
     return(sqrt(SqSum/Len));
    }

Answers

  • First thing instead of <iostream.h> use <iostream> then you can use cin and cout etc function with the help of namespace std. And how to use you can see in Following code.

    Code Block

    #include <iostream>

    using namespace std;

    int main()

    {

     cout<<«Hello world»;

     return 0;

    }

    and after that have  alook on the Bold line in the following quites your Function name and return type both have same name it will indicate to compiler that you are trying to overload the Function remove mean and use some other valid name like float if you wann you can replace two Bold line by following code and it will work proper for you

    Code Block

    float fVal =0.0;
    fVal = Mean(Temp, Length);
    cout<<«\nAverage Temperature»<<fVal;

Понравилась статья? Поделить с друзьями:
  • Importrange google таблицы внутренняя ошибка при импорте диапазона
  • Ilife v8s ошибка e41
  • Importerquicktime prm premiere pro ошибка
  • Iis код ошибки 0x800700b7
  • Illegal start of type java ошибка