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

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

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

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

Это значит, что будет создан только один набор расширяемых подстановкой ш)~пе-функций, один набор отладочной информации и одна внутренняя таблица виртуальных функций ИаЫе. ° Если имя заголовочного файла совпадает с именем файла, содержащем реализацию, то нет необходимости указывать имя прагмы.

Например, если файл шахЬо16ег. срр подключает заголовок шахЬо1бег . Ь, то прагма-директиву можно написать просто йргадша 1шр1ешепсасфсп. ° Если один заголовочный файл подключает другой заголовочный файл из другого каталога, то в прагма-директиве интерфейса указывается путь: йргаотпа 1шр1ешепсасфоп "ецЬ<11гессогу/гх1епаше. Ь ". Если это делается так, то же имя файла должно быть и в прагме реализации.

° Директива вфпс1ибе должна применяться обязательно, включение заголовочных файлов прагма-директивами не выполняется. ° В результате подключения по «ргапта 1псегйасе функции класса действуют, как объявленные с ключом ехсегп, тело функции используется только в том случае, если функция расширяется подстановкой Ппйпе). ° В результате применения йргайша фшр1ешепеаефоп подстанавливаемые кодом фп11пе функции имеют не расширяемые подстановкой скомпилированные версии на случай их вызова из модулей, не содержащих кода для их подстановки. Это правило может быть отменено применением в командной строке опции -гпо-1шр1ешепс-фп11пев. Операторы (? и >? Для выбора наименьшего и наибольшего значения из двух аргументов доступны специальные операторы.

Приведенный пример выражения возвращает наименшее из двух значений а и Ь: взпва1пе = а <2 Ьк А выражение в следующем примере соответственно возвращает наибольшее из двух значений а и Ь: в1пеа1ие = а >2 Ь| ° Эти операторы являются примитивами языка и могут применяться без каких- либо побочных эффектов. Следующий оператор возвращает наименьшее из значений х и у, и затем только однажды их инкрементирует: 1пс ш1пха1ие = х++ <2 у++2 120 Часть и.

Использование Сборного Компилятора ° Операторы < ? и > ? могут быть перегружены (очег)оа()) для действий над классами. Это показано на примере, где определяется класс ХЬо1бег с оператором >?, который возвращает копию объекта с наибольшим значением целочисленного типа. Также класс ХЬо1бег использует первичный оператор >? как внутренний для сравнения двух пелочисленных ()и() значений: /* в1ппах.срр */ ()1пс1исе <1овегеат> с1авв ХЬо1оег ( ХГ1ЕПО ХЬО1ОЕГ ОрЕГаеОГ>? (ХЬО1оахй, ХЬО1<)ЕГй) Г ргоеесеесг 1пс ча1ие? риЬ11сФ ХЬо1сег(1пс ч) ( ча1ие = ч) 1пе дееча1ие(чо1о) ( гегигп(ча1ие)) ) ХЬо1оег орегаеог>? (ХЬо1сегй 1ЬХ,ХЬо1<)егй 1Ь2] ( гееигп(хьо1<)ег(1ь1.дее)га1иеО >? 1ь2.дееча1ие()))) ) 1пг ша1п(1пгагдс,сиаг «агд г() ) ( ХЬо16ег 1Ь1 = ХЬо1<(ег(44)) ХЬо1<)ег 1Ь2 = ХЬо16ег(34)г ХЬо1<)ег 1пах = 1Ь1 >? 1Ьау восо:соис « "тЬе пах1пип 1в " «1пах.десда1ие() « "1п" ? гееигп(0)) Ограничение указателей (Йе~~псТ) Ключевое слово гевег1се из стандарта )50 С99 сейчас отменено решением комитета стандартов языка С++, но О СС все же поддерживает его использование в виде ключевого слова гевсг1се .

Объявление указателя с ключом гевег1сс гарантирует исключительный доступ к расположению памяти, на которое он указывает. На деле гарантия отсутствия псевдонимов у указателя позволяет вырабатывать более эффективный код. Ключевое слово гевсг1се может использоваться как квалификатор (г)па))йег), подобно сопле или чо1ас11е, что показано на следующем примере; СсиЬХЕ * ГЕВЕГХСС ачд; Глава б. Компиляция программ на языке С++ 121 ° Ключ реве е1сс применим только к указателям и ссылкам. В отличие от сопев или уо1ае11е, этот квалификатор не может применяться к адресуемым данным. ° Аргументы функций указатели также могут квалифицироваться как ограниченные.

В следующем примере функции гарантировано, что указатели Ьр1 и Ьр2 не пересекаются: уо16 сору(свах * хевсх1сс Ьр1, свах е хевск1сс Ьр2, 1пс в1ве) ( Еог (1пе 1=0; 1 < в1ве; 1++) Ьр1[3.) Ьр2[1)г ) ° Аргументы функций ссылки могут быть ограничены применением того же синтаксиса, который применяется к указателям, например: яоЫ 1сору(1пе а хевехьсе Ер1, Епс а кевск1сс Ер2) ( Ерз - Ерз; ) ° Ключ кеве е1сс игнорируется для различных экземпляров функции, поэтому нет необходимости его применения в прототипах. ° Указатель СЬ1в может быть ограничен использованием кевех1се в его обьявлении как части определения функции, например: уо1с ач гкпсепО гевье(се ( ...

) Действия компилятора (СотрИег Орегабоп) Этот раздел описывает некоторые внутренние действия компилятора, о которых вам необходимо знать на случай особых обстоятельств, иногда возникающих при компиляции программ. Обычно лля компиляции и компоновки ваших программ на языке С++ ничего более не нужно, кроме использования команды д++. Но в некоторых сложных ситуациях вам очень приголяться знания о кое-каких внутренних подробностях механизма компиляции программ.

Библиотеки (ЫЬгапеь) Стандартная библиотека, содержащая набор стандартных подпрограмм языка С++, называется 11всгзс++ . а. Эта библиотека довольно велика, и, хотя это обычно и не имеет значения, но все-таки следует знать, что при статической компоновке з программу могут включаться очень много избыточных определений, в действительности не используемых программой. Это — следствие того, что когда вашей программе нужна отдельная процедура, являющаяся частью объектного модуля библиотеки, то к программе в качестве ее части статически компонуется весь модуль. Когда программе требуется статическая компоновка, и вы не используете стандартные библиотечные подпрограммы, есть возможность компоновать программу с библиотекой 11Ьвирс++.

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

Например, следующие три строки содержат прототипы для разных функций: ьпе *сс16(1спд)! 1пс *сс16(вегасе вс)тсзс *)г 1пс *ссЫ(1спд, сваг *)г Компилятор без труда определит, какая из них вызывается, — по разнице в типах аргументов. Единственная проблема возникает со стороны компоновгцика (1)п)гег).

Он слепо по именам внешних ссылок подбирает в модулях соответствующие этим символическим именам определения, не обращая внимания на типы аргументов. Для решения этой проблемы применяется принудительная замена имен компилятором. Такая замена, при которой не теряется информация об аргументах, и компоновщик может находить точные соответствия. Процесс этой замены имен называется в документации "шапй!)вя". Замененное имя строится из следующих участков расположения информации и именно в таком порядке: 1. Основное имя функции 2. Пара знаков подчеркивания —" 3. Список кодов квалификаторов (г)ца1!бега) функции — таких как сспвс. Этот список может иметь нулевую длину. 4. Количество букв в имени класса, членом которого является эта функция.

5. Имя этого класса. б. Список кодов, показывающих типы аргументов функции. Например, имя функции тгозс спаше;: бпвтае (тгойа) будет преобразовано в йпаше 5спаше. Имя функция 1пс спаше: г вспотев (1о~д йг1ш) сопве — в вепаше с5спаше1, где буква "с" означает, что функция имеет квалификатор сспвс, и "1" ("эль") в конце показывает, что она может принимать единственный аргумент типа 1опд. При кодировании имени процедуры-конструктора пропускается основное имя функции. Еще пример: конструктор спаше::спеше(в1дпеб сваг) кодируется как с5спвшеяс, где "вс' — пара, которая показывает типы параметров.

Буквенные коды для различных типов и квалификаторов перечислены в таблице 5.3. Расшифровка кодируюших букв в таблице и некоторая практика научат вас свободно преобразовывать применяемые в объектных файлах имена так, чтобы находить их соответствия в исходном коде. Глава 5. Компиляция программ на языке С++ 123 Таблица 5.3, Б кеенные коды, применяемые п и замене имен «число> См.

«вовьег>. Шаблон кода функции. Тип данных 1вс. Особый целочисленный тип данных, содержащий нестандартное количество бит. Например, имя функции ирь«град(1вс, 1вгве г, сьвг) с 60-битным целочисленным типом в качестве ее второго аргумента будет закодировано как рад зирькз зс с. Для указания количества бит в таком целом числе используется шестнадцатиричное число, окруженное символами подчеркивания, Шестнадцатиричное число может не быть окружено символами подчеркивания, если соседние буквы не создают двусмысленной ситуации. Тип данных языка С++ совр1ек. Тип данных языка С++ 1овд. Имя локального класса.

1 ("эль") Указатель. За ним всегда следует индикатор типа указателя. То же, что и "Р". Указатель. За ним всегда следует индикатор типа указателя. То же, что и "Р". Квалифицируемое имя, такое, как возникающее из вложенного класса.

Тип данных языка с++ 1овд асцые. Ссылка С++. Всегда сопровождается индикатором типа, на который указывает ссылка. Например, имя функции ирь««рад(овггеввв) кодируется как Рая Зирьатоеггеав. Тип данных вьогг. Предшествует имени класса и означает "вгвгкс«ч Например, ирьг «Рвд(«го1а) вгвг1с кодируется Рад взирь.

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

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

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

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