GCC - The Complete Reference (537669), страница 126
Текст из файла (страница 126)
См. также -Мй. -Ч )/егаоп Назначает версию дсс, которая должна быть запущена при компиляции. Эта опция имеет значение только если в вашей системе установлено несколько версий компилятора. По умолчанию запускается наиболее свежая версия. Опция действует через изменение используемого компилятором и его компонентами префикса пути расположения. Обычно установленные версии компилятора находятся в каталогах /ивг/1оса1/11Ь/дсс-1*'Ь/)ааспвпе/згегввоп. Опция может быть записана в форме --пве-зтегвзоп. См. также -ь и -в. — )/егЬоэе То же, что и -зг. Отменяет выдачу всех предупредительных сообщений.
То же, что --по-магпвпдв. Включает выдачу семейства предупредительных сообщений, относящихся к коду, способному вызывать те или иные проблемы. Такие сообщения помогают программисту создавать более чистый и уверенно переносимый код. Опция включает обработку следующих ситуаций: ° Сравнение. (Сотрапзоп.) Предупреждение выдается при проверке беззнаковой величины на отрицательность (те., что ее значение меньше нуля).
Например, следующее сравнение будет всегда давать положительный результат нзза того, что переменная х беззнакового типа никогда не будет меньше нуля: ппв1япео 1пк х; ав (х < о) ° Сравнение. (Сотрапзоп.) Выдается предупреждение при сравнении величины со знаком с беззнаковой величиной. Возможно получение ошибочного результата, если при сравнении беззнаковая величина приводится к типу со знаком. Выдача этого вида предупреждения может быть отключена опцией -Ипо-ввдп-сожраге. ° Сравнение. (Сотрапзоп.) Синтаксис языка Слля числовых выражений отличается от синтаксиса вычисления условий.
Для выражений, подобных следующему, будут выдаваться предупреждения; ьт[а < Ь < с) 566 Часть П(. Приложения Алгебраический синтаксис выражения условия допустим здесь только в случае, когда значение переменной Ь принадлежит открытому интервалу между значениями величин а и с. В языке С представленное выражение эквивалентно следующей конструкции кода, которая ие будет давать непредвиденных ошибок: 1пс геви1С; гееи1С = а < Ъ| 11 (гееиъе < Ь) ° Возвращение функцией константы. (Сопм гешгп.) Предупреждение выдается, когда возвращаемое значение функции объявлено как константа.
Объявление сопев в таких случаях ие имеет смысла, потому что функции возвращают значения как гта1це, т.е, значением результата правой части выражения присваивания. ° Ииициализацив агрегатиых типов. (Аяягеяа(е [п[([а![вега.) Выдается предупредительное сообщение, когда начальные значения для сборного типа данных указаны ие для всех его членов. В следующем примере такие предупреждения будут выданы как для массива, так и для структуры: есгисе ( ьпс а; ьпе Ь| 1пс сг ) Сгвр = ( 1,2 )Г дпс агг[10) = ( 1, 2, 3, 4, Б)г ° Неиспользуемые результаты выражений, ()Чо з)([е с[[ее(.) В случаях, когда вычисление выражения ие изменяет никакой величины.
В этом примере результат сложения ие используется: 1пе а 1( 1пс Ь 1; а+Ь! ° Переполнение типа. (Отегйов.) Во время компиляции программ иа языке Рогггал выдаются предупреждения при переполнении числового типа с плавающей точкой в объявлениях констант. ° Возвращаемые значения. (Ке[цгп та1пе.) В случаях, когда код функции необязательно возвращает результат. В следующем примере функция ие возвращает результат при отрицательных значениях х: ашЬ1дгес(1пс х) ( [г(х >= 0) гесигп(х)> Синтаксис объявлеиия всасйс. (Б(а(1с зуп(ах.) Выдаются предупреждения в случаях, когда ключевое слово всасйс стоит ие в начале строки объявления. Неиспользуемые аргументы.
([)пизе([ агйшпеп(а) При использовании опции -Ма11 или -Мипиве<[ совместно с -т[ выдаются предупреждения для всех аргументов функции, не используемых в коде определения этой функции. Приложение Г. Опции командной строки компилятора ОСС 567 Опция может быть записана в форме --ехсга-магп1пдв. -)Иа, ОРМОп!ЫС Аэгп Поле орс1оп11вс содержит список разделенных запятой опций, которые должны быть переданы ассемблеру. Все опции, отделенные запятыми, передаются ассемблеру как отдельные опции командной строки. Другая форма этой опции --сог-авет)з1ег.
См, также -Ь(р и -т(1. -ЧЧа99геяа1е-ге~цгп С, С++, ОЬ>С Опция определяет выдачу предупредительного сообщения в случае, когда функция возвращает структуру (агрегатный тип мгис(), объединение (ип(оп) или массив (апау). -ФаП При компиляции программ на языках С и 0(уесг(те-С эта опция равносильна применению набора опций -т(гесигп-суре, -т)ипивеб, -т(1вр11с1с, -нвтк1сс)т, -т)коппас, -)трагес)зевев, -ИЫвв1пд-)згасев, -мвддп-соараге и -твви1с1с)таг. Опция -т(ип)клони-ргад)вав устанавливается только лля лрагма-директив, отсутствующих в заголовочных файлах. При использовании опции -о также устанавливается -т)ип1п1с1а11яеб.
При компиляции программ на С++ дополнительно к перечисленным устанавливается опции -т(сгог-сгог-рг1тгасу, -)тпоп-тг1гсиа1-ктгог, -)(геогбег и -)(поп-геатр1аге-кг1епкт. При компиляции программ на языке Рог(гав устанавливается только опции -ыипивект и -Мип1п1с1а11гект. Для компиляции программ на )ага эта опция равносильна совместному применению опций -)тгейипктапс-жокт111егв, -т(ехсгапеоив-вев1со1оп и -мипивеет. Опция может быть записана в другой ее форме --а11-магпспдв. — )))(агпТо же, что и -т(. -)(ЧЬад-1((псбоп-сав1 Опция включает выдачу предупреждений при несоответствии типа возвращаемого функцией значения типу левой части выражения.
Иначе говоря, в случае приведения (сам) типа возвращаемого функцией результата. Следующий пример кода при этой опции будет генерировать предупреждение на вызове функции: 1пе д11аО ( гесигп(88); ) слег еср) ср = (с)таг *)д1(а() 568 Часть й(. Приложения -Фсад1-а Идп с, с++, оь)с Выдает предупреждение в случае проблем с выравниванием, возможных при приведении (саз() типов указателей. Например, на некоторых машинах возможно выравнивание адресации к данным типа хпс по границе 2 или 4 байта. В случае приведения указателя с)гаг к указателю 1пг (т.е. фактически адресации к типу с)гаг как к 1пг) из-за выравнивания возможно получение неправильного результата. -Фсад1-дна! с, с++, оь1с Выдает предупреждение, когда вызов функции отменяет действие квалификатора сопле.
Пример; сопвг сьаг *сопсьрг сваг "сир) сьр = (сваг »)сопсвр; -Фсьаг-йиЬ|сг) равд с, с++, оь!с Выдает предупреждение при использовании переменной типа сваг в качестве индекса массива. Тип с)1аг часто по умолчанию считается знаковым, что может приводить к ошибкам. -Фсоп) п)еп1 с, с++, оь)с Выдает предупреждение, когда внутри комментария типа "г*... » ~" находится сочетание символов "/»". Предупреждение также выдается в случае, когда строка, содержащая комментарий отмеченный сочетанием "//", заканчивается символом обратной наклонной черты '~'. Что, конечно, означает то, что текущий комментарий продолжается в следующей строке кода.
с, с++, оь|с Предупреждение выдается, когда наличие прототипа требует конвертирования типов, которого не было бы при отсутствии прототипа. Имеются в виду такие случаи, когда требуется конвертирование между действительным и целым типом, или преобразование знаковых величин в беззнаковые, а также при изменении диапазона величин. Предупреждения выдаются только в случаях явного принудительного конвертирования данных (соегсюп), а не для назначенного приведения типов (саа().
Например, в этом коде для первого оператора предупреждение будет выдано, а для другого — нет; ппв1япед 1пг геср; геср = -1у геср (опв1япес 1пг)-1у -Фссог-Мог-рг)Ьгасу Выдает предупреждение для класса, который невозможно использовать из-за того, что его конструкторы и деструкторы объявлены с атрибутом рг1таее, либо класс не имеет доступных для использования методов. Приложение Г. Опции командной строки компилятора 6СС 569 С++ -ЧЧс(ергеса1ед Действует по умолчанию. Выдаются предупреждения об использовании не поддерживаемых свойств (дергесагег) Геашгез) языка С++.
Отменяется опцией -Ипо-ккергесаееб. -ЧЧ($ергесаСед-($ес1агабопв С, С++, ОЬ1С Действует по умолчанию. Выдаются предупреждения об использовании операторов и ключевых слов, отмеченных атрибутом, обозначающим прекращение поддержки, (дергесагед). Отменяется опцией -тгпо-ктергесасект-стес1агасЗ.опв. -ЧЧг1ЬаЫе6-орбгпнабоп Выдает предупреждения при запросах отключенных способов оптимизации.
Эти обстоятельства связаны с ограничениями самого компилятора, а не с проблемами в коде программы. ССС может не поддерживать слишком сложных и/или слишком долго выполняемых оптимизаций. -ЧЧгз(ч-Ьу-гего Действует по умолчанию. Выдает предупреждения о делении целого числа на ноль в случаях, когда компилятор может определить такую ситуацию. Отменяется обратной опцией -нпо-Ызг-йу-аего. Для деления на ноль чисел с плавающей точкой предупреждений не предусмотрено. -ЧЧейс++ Предупреждения об отступлениях от правил разметки кода, изложенных в книге Скотта Маерса (Всоп Муегз„"Ейесгпе С+~-").