46019 (665326), страница 43
Текст из файла (страница 43)
Неожиданное появление ) - проверьте наличие открывающей скобки
Лишняя круглая правая скобка встречена там, где она не ожидалась. Проверьте отсутствие (.
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
Функция должна быть объявлена до использования в прототипе
Когда прототип функции ссылается к типу структуры, который не был ранее объявлен, объявление внутри прототипа - это не то же самое, что объявление вне прототипа. Например,