46019 (665326), страница 44

Файл №665326 46019 (Turbo C++ Programer`s guide) 44 страница46019 (665326) страница 442016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 44)

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. Ниже приводятся опции, необходимые для того, чтобы обеспечивалась данная интерпретация:

Идентификация диагностических сообщений в TurboC++

Таблица A.1

Опция Действие

-A

-C-

-p-

i32

w-

wbei

wdcl

wcpt

wdup

wsus

wrpt

wvrt

wbig

wucp

wstu

wext

wfdt

Разрешает только ключевые слова ANSI

Запрещает вложенные комментарии

Устанавливает использование соглашения о связях С

Устанавливает минимум 32 значащих символа в идентификаторах

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

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

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

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

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

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

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

Включает предупреждение о функции void, возвращающей значение

Включает предупреждение о слишком большой константе

Включает предупреждение о смешанном использовании указателей signed и unsigned char

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

Включает предупреждение о переменных, определенных сразу как external и static

Включает предупреждение об определениях функции, использующих typedef

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

-ms! Для моделей данных small SS и DS должны совпадать.

Характеристики

Тип файла
Документ
Размер
2,71 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6516
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее