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

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

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

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

Например, в следующей программе объединеиие, содержащее элемент типа боиЬ1е, приводится к типу ()оцЬ1е, затем программа обращается к каждому байту через ссылку на объединение: /* ип1опсаве.с */ $1пс1пае <всего.Ь> епзсп срагсв ( ппв1дпес сЬаг Ьусе[8) ОспЬ1е ЙЬ1( )' 1пе ха1п(1пе агдс,снах *агдя() ) ( 1пе 1( Оопнге уа1пе = З.14188; Еог(1=0( 1<8к ).++! [ рг1пЕЕ("Ъ02Х ",((ип1оп прагсв)уа1ие).Ьусе(1))( ) рг1пЕЕ("1п") ( геспгп(0); ) Приведение объединения также может быть использовано в качестве аргумента вызова функции: гс3л$ ргссип(пп).сп <)рагев)( репса((пп1сп срагев) уа1пе)к Приведение объединения несколько отличается от других приведений типов.

В действительности оно является конструктором и поэтому не может иметь значения Ьа!ие. Это делает ошибочными операторы подобные следующему: (пп1сп праге)уа1пе.аЬ1 = 1.2; (т оииакл( Глава б. Компиляция программ на языке С++ 109 Исходный код на ассемблере. файлы этого типа вырабатываются на промежуточном этапе компиляции. разделяемая (динамическая) объектная библиотека. (Зиагеб оЬ)ес( ИЬгагу,) Стандартные динамические библиотеки основного набора функций языка С++ имеют имена бвз суффикса.

<вове> Компиляция отдельного исходного файла в готовую к запуску программу В качестве примера вам предлагается исходный код простейшей программы на языке Сч-ч-, сохраните его в файле Ье11оъток1а. срр: /* Ье11оиок1а.срр */ Мьпс1пае <1овекеавг> 1пс гва1п(1пс акдс,сиас *ахов()! ( аеа:гсопс « "Ье11о, иог1атп"/ кеспкп(0)г ) Для выдачи отдельной строки на стандартное устройство вывода эта программа использует функцию соне, определенную в стандартном заголовочном файле 1оаетеазв. В готовую для запуска форму эта программа может быть скомпилироваиа следующей командой: б д++ Ье11оиок1а.срр Компилятор д++ распознает файл по суффиксу его имени как исходный файл на юыке Сч-ъ.

В соответствии с действующим предопределением он должен скомпилировать указанный исходный файл в объектный, далее скомпоновать объектный файл в готовую к запуску машинную программу, и затем удалить объектный файл. В связи с тем, что в командной строке не определено имя для выходного файла, по умолчанию будет создан файл с именем а. оис. Команда для запуска готовой программы и ее вывод выглядят так: 3 а.опе Ье11о, иосза ъ д++ ЬеНоиок1а.срр -о Ье11оиокта Ввод этого имени в командной строке приведет к выполнению программы: Ф Ьеззоиок1а, Ье11о, иок1а Программа д++ является особым вариантом утилиты дсс, она устанавливает Сч-+ в качестве основного языка компиляции, что приводит к автоматическому исполь- Имя для выполнимого системой файла, в который должен быть скомпилирован исходник, передается компилятору опцией -о.

По этой команде будет выработан файл с именем Ье11овгок1а: 1 10 часть!|. использование Сборного компилятора зованию стандартных библиотек языка С++ вместо применяемых по умолчанию библиотек языка С. При использовании соглашений об именах библиотек и указании соответствующей библиотеки в командной строке возможна компиляция и компоновка программы на языке С++ и командой дсс. Например, такой: 3 дсс Ье11оиог16.срр -1веос++ -о Ье11оиог1о Опция -1 Галь") заменяет следующее за ней имя, подставляя к нему префикс 11ь и суффикс . а„что превращает имя указанной библиотеки в 11ЬвМс++.а.

Затем поиск библиотеки с таким именем проводится в каталогах для стандартных библиотек. Дальнейший процесс компиляции и выходной файл точно соответствуют действию команды д++. На многих системах при инсталляции ОСС создается программа с именем с++. Ее использование вполне равносильно действию д++.

Вот пример такой команды; ь с++ Ье11оиог1о.срр -о Ье11оиог1о Преобразование нескольких исходных файлов в готовую к запуску программу Если в командной строке указывается несколько исходных файлов, то все они компилируются и компонуются вместе в один исполняемый файл. Далее — пример заголовочнного файла (Ьеа(]ег 6|е) с именем вреа]е. Ь, этот файл содержит определение класса, состоящего из одной единственной функции: /* вреа]е.Ь */ «1пс1ш]е <1овсгеаа> с1авв яреа]т ( риЬ11с: чо1о вауне11о(сопев сЬаг *); )' Далее — листинг файла вреа)е.

срр, содержащего код реализации функции вауне11о(): /* вреа]с.срр */ ()1пс1пае "вреа]т.Ь" чо16 Яреан:гвауне11о(сопвс сЬаг *всг) ( вго::сове « "Не11о " « вег « "Хп"/ ) Файл Ье11овреа]с. срр содержит программу, использующую класс яреайс /ь Ье11овреа]т.срр */ Я[пс1пое "вреа]с.Ь" 1пс ааьп(ьпс агяс,сЬаг *агдч[]) ( яреа]т вреакг ореад.ваУНе11о("иог1о")] геепгп(0)/ Глава 5. Компиляция программ на языке С++ 1 1 1 Для компиляции и компоновки этих трех файлов в единственный исполнимый файл используется одна команда; д д++ Ье11овреах.срр вреах.орр -о Ье11овреак Компиляция исходного кода в объектный Для компиляции исходного кода с подавлением компоновки и, соответственно, вывода объектного файла вместо исполняемого применяется опция -с.

По умолчанию имя вырабатываемого файла совпадает с именем исходного, только имеет суффикс .о. Например, по следующей команде исходный файл Ье11овреак. срр будет скомпилирован в объектный файл Ье11овреаи. о: Ф д++ -с Ье11овреах.срр Программа д++ также распознает файлы с суффиксом . о в качестве входных и передает нх компоновщику (Брег): 3 д++ -с Ье11овреах.срр В д++ -с вреах.срр 3 д++ Ье11овреах.о вреак.о -о Ье11овреах Следует заметить, что опция -о используется не только для присвоения имен исполняемым файлам.

Ее также можно использовать для назначения имен и другим выходным файлам компилятора. Например, в результате следующей последовательности команд будет создан тот же файл с исполняемым кодом, что и в предыдущем примере. С той лишь разницей, что имена промежуточных объектных файлов будут другими: д д++ -с Ье11овреах.срр -о Ьври1.о 3 д++ -с вреах.срр -о верха.о 3 д++ Ьврх1.о Ьвркз.о -о Ье11овреах Предобработка Назначение опции -и указывает драйверу д++ пропустить исходный код через препроцессор СРР и не производить никаких дальнейших действий.

По следующей команде будет выполнена последовательная предобработка исходного кода из файла Ье11омох1б. срр и выдача результата предобработки на стандартное устройство вывода; 3 д++ -Е Ье11омог1о.срр Исходный код программы в файле Ье11омох16. срр состоит всего из шести строк и зта программа только и делает, что выводит строку текста. Но на выходе препронессора будет более 1200 строк. Так много потому, что будет включен заголовочный файл фовехеагя. Ь, а он, в свою очередь, включит в код еще несколько заголовочных файлов. В них определяется несколько больших классов, отвечающих за ввод и вывод.

1 12 часть|1. использование Сборного компилятора Суффикс имени файла, принятый в ОСС для результатов предобработки — . 11. Такой файл может быть выработан при использовании опции -о, как в следующем примере: В дсс -и Ье11оиот1о.срр -о Ье11оиот1<).11 Выработка компилятором ассемблерного кода Опция -В указывает компилятору сгенерировать код на языке ассемблера и на этом остановиться. Следующая команда создает файл с именем Ье11оегог16.

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

Составляющие библиотеку части могут содержать применяемые функции, определения классов и объекты, являющиеся вхождениями экземпляров ()пмапсез) определений классов. В действительности все, что может содержаться в объектном файле с суффиксом . о, может быть помещено в библиотеку. В следующем примере создаются два объектных модуля, используемые затем для составления статической библиотеки. Заголовочный файл (Ьеа((ег й)е) содержит необходимые программе функции, определения классов и объекты. Заголовочный файл вау. Ь содержит прототип функции вауне11о ( ) и определение класса с именем Вау. Далее приводится содержимое этого файла: /* вау.Ь */ $1пс1п<)е <(овсгеав> то1гз вауЬе11о(то16)г с1авв Вау ( рг(тасе: сЬат *вст1пдг рпЬ1(с: Вау(сЬат "всг) ( вег(пд = вег) ) то(о ваутЬ(в(сопвс сЬаг *всг) ( вссг:свис « всг « " тгош а всат(с 1(Ьгагу1п'Ы ) то1<) ваувсг(пд(тоьо)г Глава б.

Компиляция программ на языке С++ 1 1 3 Следующий файл с именем в ау. срр — исходник первого из двух объектных модулей, которые должны быть помещены в библиотеку. В нем содержится тело определения функции в ауяег1пд ( ) класса Зау. Также он содержит объявление объектаз 11Ьгагувау, который является экземпляром класса Зау: /* вау.срр */ «застаете »вау.Ь" возгт Зау::ваувег1пд() ( вгг]::свис « вег1пд « »1п") ) Зау ].1Ьтвтувау("Ь1Ьгагу 1пвеапсе от Зву»)) Файл вауЬе11о. срр содержит исходный код второго модуля, который также должен быть помещен в библиотеку.

В нем находится определение функции вауЬе11о(): /* ввуЬе11о.срр */ Взпс1игте "вазг.ь» гоЫ вазгЬе11о() ( всцг:соме « "Ье11о тгоа а всас1с 11Ьгату1п"; ) Приведенная далее последовательность команд выполняет компиляцию двух исходн]ях файлов в объектные и затем сохраняет их с помощью утилиты аг в статической библиотеке: 3 д++ -с ваУЬе11о.срр 3 д++ -с вау.срр 3 ат -г 11Ьвау.в вауЬе11о.о вву.о Утилита аг, использованная с опцией -г, создает новую библиотеку с именем 11Ьвау. а и помещает в нее перечисленные в команде объектные модули. При таком способе применения аг создает новую библиотеку с указанным именем, если таковой еще не существует. При наличии указанной библиотеки утилита аг заменяет в ней существующие объектные модули их новыми версиями. Далее — содержимое главного исходного файла программы вазпвайп.

срр, использующей статическую библиотеку 11Ьвау. а: /» ваува1п.срр */ $1пс1пгте »вау.Ь» [пс аа1п(1пе агдс,сЬаг *атдч[]) ( ехсегп Зву 11Ьгвгувау[ Зау 1осв1вау = Зву(»ъосв1 1пвевпсе от Зау")г вауЬе11о()к 11Ьгагувау.ваутЬ1в("Ьоиду»); 11Ьгвгувау.ваувсг1пд(); 1оса1вау.вауяст1пд(); геепгп(0); ) 1 14 Часть И. Использование Сборного Компилятора Эта программа компилируется и компонуется приведенной далее командой. В команде определяется, что драйвер верхнего уровня компилятора д++ разрешает все внешние ссылки, имеющиеся в ваутва1п.срр, через поиск определений для требуемых символических имен в библиотеке 11Ьвау. а: 3 д++ вауаахп.срр 11Ьвау.а -о вауаазп Внешнее отношение к 11Ьгагувау ссылается на объект, объявленный в 11Ъвау.

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

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

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

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