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

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

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

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

абЬ или . абв. Допустимые опции команды дпасргер перечислены в таблице 9.10. Габлица 9,10. Опции командной строки для утилиты йпа[ргер Заменяет каждую предобработанную строку пус~ой строкой. По умолчанию строка удаляется. Оставляет предобработанные строки в выходном исходном файле как комментарии. Каждая такая строка маркируется последовательностью Определяет символ укаэанным значением ~очно так же, как если бы он был включен в файл определений такой строкой: -Эауавэз азия вувво1: казна Генерирует прагма-директиву воихса васакепса так, чтобы все сообщения об ошибках и отладочная информация ссылались на первичный нвпредобработанный файл.

Несмотря на определение опции -с, зта опция применяет также и опцию -Ь для сохранения порядка нумерации строк первичного файла. Выводит отсортированный список символов, определенных для предобработки, вместе с их значением. При этой опции директивы вас воспринимают все неопределенные символы квк имеющие значение Ва1аа. Необязательный файл определений (двЕ1пй сйопвЕ11в) может содержать опрслслевия символов для прсдобработки (одно или более) в следующем формате: эупьо1: = ттазие Значение (тга1ив) определяемого символа (вутаЬо1) может быть пустым, может быть ограниченной одинарными кавычками строкой литер или любым набором букмвных знаков допустимого диапазона и в доступной для компилятора Ас(в кодиров- 7 к гаяяхаь Утилита дпавргер может использоваться как простейший препроцессор исходного кода на языке Ас[а.

В командной строке требуется указание имен как входного, гзх и выходного файлов. Все определения для предобработки должны находиться в грстьсм указываемом файле либо определяться в командной строке. Синтаксис комзвдной строки следующий: 194 Часть П. Использование Сборного Компилятора ке. В отличие от препроцессора С(СРР) дпаергер не подстанавливает каждое вхож- дение, совпадающее с именем символа. Предназначенный к подстановке символ должен быть специально помечен в программе знаком доллара ('В'). К примеру, пред- положим, что файл определений содержит такую строку: Ьгасх11п : еиегпс11пЫ В этом случае предобработка приведет к подстановке значением с)тегл)о11лгкс каждого вхождения строки б)згас)с11п, найденного во входном файле. Также во входном файле могут использоваться директивы Мкг, «е1векК и «епй Ьг лля управления условной компиляцией в зависимости от того, каким значением определен проверяемый символ — сгие или Ка1ве.

Вот пример применения условных директив предобработки; «1г сспагер Евеп Рие Ь1пе("сспагер хв аетъпеа ав Сгие")г «е1ве Рис ь1пе("сспйгер 1в аесгпеа ав гатве")г «епа Ьбг Логика приведенного выражения может быть обращена применением оператора поел «Ьк сспагер Свеи Рие Ьгпе("сспагер 1в аеегпеа ав Са1ве")) «е1ве Рие Ьспе("сопагер 1в аег1пеа ав Сгие" ) с «епа ЬС) дпайз Таблица 9.11.

Коды стат са исходных файлов, выводимые утилитой ла1!з К Леев в в О вв вв Исходный файл не найден. Найдено не менее одного файла исходного кода, нс нн один нз найденных исходных файлов не соответствует версии сбьектнсгс модуля. пп Утилита дпас1в является просмотрщиком содержимого библиотек. Она может быть использована для извлечения и вывода информации о скомпилированных модулях. Она показывает взаимоотношения между объектами, именами модулей и исходными файлами. Утилита также может быть использована для определения зависимостей между компиляционным модулем и исходными файлами.

Входными файлами для утилиты дпас1в могут быть вырабатываемые компилятором файлы как типа . а11, так и объектные файлы .о. Формат вывода по умолчанию состоит из четырех колонок. В первой колонке выводится имя анализируемого объектного файла, во второй — имя головного модуля этого объектного файла, в третьей — статус соответствующего модулю исходного файла, в четвертой — имя этого исходного файла. Возможные коды статуса (состояния) исходных файлов приведены в таблице 9.11.

Глава 9. Компиляция программ на языке Дба 1 95 Найден исходный код, точно соответствующий объектному модулю, но, по кРайней меРе, один из исходных файлов, найденных раньше этого соответствующего файла, объектному модулю не соответствует. Иначе говоРя, точно соответствующий исходный код скрыт от компилятора другими файлами. После последней выработки объектого файла в исходном коде делались незначительные изменения, не требующие повторной компиляции.

Такие изменения могут относиться к форматированию исходного текста программы или к комментариям. Обьектный файл вполне соответствует своему исходному коду. ВХР ок Таблица 9,12. Опции командной строки для 9па1Ь добавляет к выводимой информации сведения об использовании предопРеделенных модулей, имеющих отношение к укаэанному в команде файлу. При этом выводится весь список таких модулей, включая и те, которые предопределены в стандартных библиотеках языка Аг)а.

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

-ататгесгигУ -асатгесаогу Распечатывает на стандартный выход этот список опций. То же, что и одновременное применение опций -атггзгеисогу и -асасгеисогу с одним именем каталога. Отменяет поиск исходных и объектных файлов в системном каталоге, применяемом по умолчанию. Отменяет поиск исходных файлов в системном каталоге, применяемом по умолчанию. -1гигеигогу -аоагваис Ограничивает выводимую информацию только сведениями об обьектных файлах.

Использует указанный файл проекта. Ограничивает выводимую информацию только сведениями об исходных файлах. Ограничивает выводимую информацию только сведениями о компиляционных модулях. ГенеРиРует вывод описаний, включающих полные пути к исходным и объектным файлам. Выводятся также и разъяснения (на английском языке) терминов, выводимых с именами файлов. Устанавливает уровень подробности выводимых описаний.

Возможные значения для ишаьег — О, 1 или 2. Определяет значение внешнего параметра. -о -Риаие -чРииивег -Хауиво2 ча2ие Опции командной строки, поддерживаемые утилитой дтгас1в, перечислены в таблице 9.12. Они позволяют управлять содержанием и формой представления информации, выводимой ВпаЕ2в, а также определять пути для поиска файлов. 1 96 Часть 11. Использование Сборного Компилятора Япайуь и япаЫа Утитита опаервув выводит исходный код пакета на языке Ада, содержащий все системные размерности и характеристики системы, на которой она запущена. Выводимый код включает в себя системные определения таких величин как наибольшие и наименьшие значения целых чисел, порядок точности чисел с плавающей точкой, начальное аппаратное значение целого числа по умолчанию, наибольший размер адресуемой памяти и аппаратный порядок представления байтов (обратный или прямой).

Вывод утилиты дпаервеа — исходный код пакета Аг1а, содержащий присвоенные значения определениям, зависимым от реализации. Это включает в себя наибольшие и наименьшие значения чисел с плавающей точкой, весь распознаваемый компилятором набор знаковой кодировки и используемый метод представления расширенных буквенных знаков. Эти утилиты не имеют опций командной строки. При запуске они динамически определяют все выводимые значения. ава Сюеищение шш и ногда обстоятельства требуют объединения в одной программе исходных частей, написаннгях на разных алгоритмических языках.

Обычно это происходит когда требуется обеспечить совместимость сушествуюшего тела кода программы с частями другой программы, написанной на ином языке. Так бывает при объединении проектов, отделов или даже компаний. Другой распространенной причиной комбинирования языков является потребность в использовании программой, написанной на одном языке, возможностей другого языка. Чаще всего при написании программы на языке высокого уровня оказывается весьма полезным применение возможностей языка системного уровня (например, языка С). Также приходится применять два языка в одном программном проекте для поддержки уже написанных частей при изменении корпоративной политики.

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

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

Конечно, никаких гарантий в ОСС не существует, и возможны некоторые нестыковки, но они, как правило, разрешимы. Широко распространенная в ОСС практика объединения различных языков в одном проекте ведет к быстрому устранению любых возникающих зпруднений. 1 98 Часть П. Использование Сборного Компилятора При совмещении языков могут возникать ситуации, требующие применения некоторых особых приемов. Дело не только в различиях базовых структур языков. Г(рограммист должен быть готов иметь дело с такими вещами, как стандартные соглашения о применении глобальных имен, правила замещения имен, различия в формате передаваемых аргументов, обработка исключений, смешивание стандартных динамических библиотек разных языков. Совмещение С++ и С Язык С++ был разработан как расширение языка С, поэтому части исходного кода на этих алгоритмических языках объединяются вполне естественно. Применяются одинаковые соглашения об именах, и базовые типы даннь)х, в основном, те же.

Единственное отличие заключается в именах функций. При компиляции с языка С используются простые имена функций без указания количества и типов аргументов. А в С++ имя функции всегда включает в себя список типов аргументов. Однако в языке С++ специально предусмотрена возможность объявления функций на языке С, что, конечно, означает, что программа на языке С++ может непосредственно включать в себя прямые вызовы функций С. Вызовы функций С из кода на языке С++ В следующем примере программа на языке С++ вызывает функцию С с именем вау)те11о () . Этот вызов является прямым вызовом, что возможно благодаря тому, что функция объявлена в программе С++ как ехсегп "с»: /* сррзс.срр */ ()Ьпс1и<)е <1овггеап> ехеегп "с" уоьд сваупе11о(сваг >всг)) 1пс ааьп(1пс агдс,с)>аг *агру[)) ( свауне110("Не110 ггоа срр ео с") гееагп(0)) ) Функция на языке С не требует особого объявления, она находится в файле свау)зе110.

с и представляет собой следующее: /* сваупе11о.с */ Вьпс1ийе <ваап.)» усы сваупе11о(сваг *всг) ргьпее ( мвв Хп", вег) Последовательность следующих трех команд скомпилирует две эти программы и скомпонует их в готовый исполняемый файл. Гибкость применения д++ и дсс позволяет сделать это различными способами, но такой набор команд, вероятно, является наиболее прямым путем: глава (о. совмещениеязыков 199 3 д++ -с срр2с.срр -о срр2с.о 3 дсс -с свауЬе11о.с -о свауЬе11с.о л дсс срр2с.о свауЬе11о.с -1всйс++ -о срр2с Учтите, что при окончательной компоновке в этом примере необходимо указывать стандартную библиотеку языка С++, потому что компоновщик ()телег) задействован здесь командой де с, а не командой д++.

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

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

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

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