Главная » Просмотр файлов » GCC - The Complete Reference

GCC - The Complete Reference (537669), страница 129

Файл №537669 GCC - The Complete Reference (GCC - The Complete Reference) 129 страницаGCC - The Complete Reference (537669) страница 1292015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Речь идет о таких конструкциях, которые могут по-разному обрабатываться различными компиляторами и соответственно давать непредсказуемый результат при портировании кода. Предупреждения выдаются в следующих случаях: ° Выражения с двумя операторами в одной строке и неопределенным порядком их выполнения. Например, кол хь "у*в из-за пропущенных скобок может быть интерпретирован как х**(у*в) и как (х*ау) в. установка флага -бребапе1с также назначает выдачу предупреждений о таких ситуациях.

° Выражения с неоднозначной унарной операцией "-". Например, выражение -2*ах может быть истолковано как (-2*а ) х или как — (2**х) . ° Использование в качестве счетчика цикла рц действительного числа вместо целого, Это может давать неожиданный результат при использовании различных компиляторов. Приложение Г. Опции командной строки компилятора ОСС 579 тому что опция -тяе11 тоже по умолчанию игнорирует системные файлы-заголов- ки. -111(1гадШог)а! Выдает предупреждения для стандартных конструкций языка, которые могут иметь различное значение, или не определены в традиционном стандарте языка С. Для обеспечения переносимости кода следует избегать использования некоторых неоднозначных или проблематичных конструкций.

Вот список некоторых ситуаций, по которым возможна выдача предупреждений: ° Преобразование типов (Сопуегз)оп). Конвертирование между типами чисел с фиксированой и с плавающей точкой, вызванное несоответствием определения функции объявлению ее прототипа. См. также -т(сопуехсаоп. Пример вызова функции, который приведет к выдаче предупреждения: уоза Еа)кеаоеЬ1е (аоиЬ1е сика1) к апе е1диву = ас) СакеаоиЬ1е(е1яЬСу) ! ° Локальные функции (Ех(егпа1). Случаи вызова функций, объявленных с атрибутом ехсехпа1, за пределами области их видимости (блока, в котором они были объявлены). ° Инициализация (1п!(!а! уа!цез), Присвоение начальных значений автоматическим агрегатным типам.

Например, объединению (ипюп) или структуре (з(гпс!), объявленному внутри функции. ° Инициализация (! п((!а! ча!пез). Присвоение начального значения объединению (ипюп) вызовет предупреждение. Даже при использовании для инициализации константы, равной нулю. ° Метка (1.аЬе1). Совпадение имени метки с именем объявленной переменной. ° Константы (Сопя(ап(з).

Случаи объявления целочисленных констант с суффиксом (), а также констант вещественных чисел (геа1 пшпЬетз) с суффиксами у или Х. ° Константы (Сопя(ап(з). Объявления буквенных констант (символьных литералов) в форме десятичного числа при отличии диапазона и~или знака числа (+/Ч от требований традиционного стандарта языка С.

Предупреждения выдаются только для десятичной формы представления. Шестнадцатиричные и восьмеричные константы всегда воспринимаются как последовательность бит. е Буквенные строки (Ейега! з(г!пйз). Предупреждения выдаются при использовании метода объединения строк (солса(епа(юп) стандартного диалекта С. е Препроцесеор (Ргертосеззог). Использование имени макроса (гпасго) в строковых литералах (з(ппя 1йега!). Стандартный язык С не допускает этого, хотя в традиционном языке Кй)к С строки могут содержать имена макросов.

° Препроцеесор (Ргергосеззог). Все директивы препроцессору начинающиеся в первой позиции строки, не определенные в традиционном языке С. 580 часть пг. Приложения ° Препроцессор (Ргергосеззог). Макроопределения в форме функций без назначения аргументов. ° Статические функции (Яа(!с). При объявлении з(а()с-функции после объявления не статических функций. Некоторые компиляторы традиционного стандарта языка С не воспринимают такой код. ° Оператор Ян((е)).

При использовании в операторе аттйсс)) переменной типа 1опд в качестве операнда переключателя саве. ° Присутствие унарной операции "+" (Опагу р!цз). -)йПп9гаРМ С Включает выдачу предупреждений об использовании триграфов ((пягар))з) в строковых константах.

Есть замечательный пример. Одна из версий ядра (.(ппх содержала такую строку: «йвш: ракйсу еккох ( уз в) 1п". Стандартным компилятором языка С она транслировалась в ийвяаг рах1су егкох (в11п". -ФипдеФ С, С++, ОЬ(С Включает выдачу предупреждений при использовании не определенного идентификатора в выражении условия директивы йети. -Фип! пса!вел Выдает предупреждения при использовании автоматической переменной до ее инициализации. Также предупреждает о ситуации, когда вызов яесбшяр() может нарушить значение автоматической переменной. Опция должна использоваться только в сочетании с -о, потому что для определения таких случаев используются результаты оптимизации потока данных (да(а йо)ч апайяз).

Точность этих сообщений не гарантирована. В следующем примере показана трудно определяемая ситуация, когда функции ркйпсй ( ) может быть передано как инициализированное, так и неинициализированное значение переменной ча1пе: 1пс ча1пе) 1Г(а < Ь)г ча1ие = Вг е1ее 1к(а > с) чазпе = 10; ргзпее("Ъйхп",ча1пе)) Из-за особенностей применяемых способов анализа потока данных действие рассматриваемой опции не распространяется на структуры (а(гпс(), объелинения (ипюп), массивы, любые переменные с атрибутом чо1ас11е, переменные адресуемые через ссылки на них, переменные, которые используются для вычисления значений, в дальнейшем нигде в программе не используемых. Результаты анализа потока данных предупреждают об использовании оператора вес з шар ( ), но не определяют места обращений к 1опдб шар ( ) . Поэтому предупреждения могут выдаваться и при отсутствии проблем.

Те же способы оптимизации потока данных используются и для исходного кода на языке Рог(гав. Следующий пример показывает ситуацию, когда точно определить Приложение Г. Опции командной строки компилятора ОСС 53 1 ислользование неинициализированной переменной ТЧАЬ не представляется Возмож- ным.

1Р (1ЧАЬ .В(). 1) ТУАЬ = 5 1Р (1УАЬ .Б(). 2) тЧАЬ = 10 САть Бион(тчль) Появление некоторых выдаваемых лри этой опции ложных сообщений можно предотвратить объявлением функций, не возвращающих значение, с атрибутом погесигп. Опция -нипзп1с1а11яект автоматичеСки Устанавливается лрн совместном использовании опций -т(а11 и -О. -%нп(спО)(чп-ргзятпед Выдает предупреждения об использовании неизвестных лиректив йрга(ива. Если олция лрименена не автоматически вследствие установки -тяа11, а указана явно, то ее действие раслространяется и на системные заголовочные файлы (зуз(ел) )(еа()ег Нез).

-Фнпгеасг)аЫе-соде Включает выдачу лредулреждений о неиспользуемых лри выполнении программы участках кода. Следует с большой осторожностью удалять участки, по которым выдаются такие сообщения. Предупреждения могут выдаваться о подстанавливаемом (ш)ше) коде функции или расширении имени макроса (ехрапбоп оГа гласго) лри том, что другие экземпляры вхождений такого кода могут использоваться программой, Кроме того предупредительные сообщения могут выдаваться при намеренном пропуске участков условного кода установкой опций компилятора. -Фнпыед Эта опция устанавливает набор опций -тлтоцвеб-йцлссхоп, -ншшве(1-1аье1, -ицтшветт-рагатвесег, -ишлвек)-уа1ие и -«лишае(т-чаг1аЬ1е. При комлнляции программ на языке Рог(щи лри этой олции выдаются предупреждения ло всем объявленным, но не использованным переменным.

Опция автоматически применяется при установке -тта11. -Фнпнзед-1нпсс)оп Выдает предупреждения о неиспользуемых определениях статических (з(айс) функций, а также при отсутствии определений объявленных функций. Опция -тяипиве(т-йппсс1оп задействуется автоматически лри использовании опции -мцьшвей или -(яа11. -Фнпыед-(а)зе! Включает выдачу предупреждений о неиспользуемых метках, объявленных в программе без атрибута аловерт. Олция -т(словак)-йипсс1оп задействуется автоматически при использовании опции -ншшвеб или -На11. 582 частыЧ. приложения -1йгцпыед-рагагпе1ег Вылает предупреждения о неиспользуемых аргументах функций, объявленных без атрибута пппвеб.

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

Тип файла
DJVU-файл
Размер
6,08 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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