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

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

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

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

В интерфейсе С)>)1, дауа-объекты яег1пдв всегда создаются вызовом одной из следующих функций: 204 Часть ((. Использование Сборного Компилятора ° дчиеиясг1пд(сопвс сЬаг*сЬагв, Зв1хе 1епдЕЬ) Возвращаемый обьект яег1пд указанной длины 1епдтЬ содержит буквенные символы, содержащиеся в строке типа сЬагв. ° дчиеиясг1пдъастп1(попас сЬаг*Ьусев, Зв1хе 1епдви) ВОЗВращаЕМЫй ОбЪЕКт ЯЕГ1Пд уКаэаННОй ДЛИНЫ 1еадЕЬ СОдЕржИт ЗНаЧЕНИя из массива переменных типа Ьуее.

° ячиеиясг1пдъасьп1(сопвс сиаг*Ьусев) Возвращаемый объект Яегхпд содержит значения из массива переменных типа Ьуее, но без начального байта с нулевым значением. ° дчиеиаегьпдпту[сопве сЬаг*Ьуеев) Возвращаемый объект яег1пд содержит значения из массива переменных типа Ьуее в кодировке цту, без первого байта с нулевым значением. Загрузка Зача-класса и создание его экземпляров Использование интерейса СМ дает возможность свободно смешивать в одной программе классы С++ и Уста. Следующий пример программы состоит из одной основной пропедуры С++ и одного класса /ага, экземпляр которого создается и используется для записи и вывода строк текста.

Вот класс на языке дача с именем яреа)е, предназначенный для хранения и вывода одной строки: /* Яреа)х.зача */ РпЬ11с с1авв Яреак ( Яегьпд вег1пд/ яреах[) ( всгьпд = "ипьпьсьа11хеа"/ ) рпЬ11с чо1Я весасг1пд(асг1пд всг) ( всг1пд = всг/ ) рпЬ11с чоЫ вЬоиасгьпд() ( Яувсеа.опс.ргьпс1п(всг1пд)г ) Процедура-конструктор класса Яреа)с инициализирует внутреннюю строку со свойствами, применяемыми по умолчанию. Однако это может бь)ть замещено вызовом функции вееясгапд().

Метод вЬомяегйпд() может быть вызван для вывода текущей строки на стандартное устройство вывода. Теперь этот класс должен быть скомпилирован в файл типа . с1авв. Такие файлы содержат код для выполнения в виртуальной мишане /ага, те. байт-код интерпретатора Л М. Это можно сделать в любом стандартном компиляторе /ага, в ОСС можно использовать следующую команду; $ доз' -с яреай.дача Глава )О.

Совмещение языков 205 Следующий шаг состоит в применении команды дсзЬ для переработки файла Яреа)к.с1авв в заголовочный файл интерфейса СМ с именем Яреа)<.Ь. Вот пример команды: Я дсбЬ Яреа)< Команда дозЬ способна вырабатывать файлы как в стандарте СМ, так и в стандарте )М ("Зача Ха(|че )п(еггасе"). По умолчанию применяется С) П, поэтому никаких дополнительных опций в команде применять не требуется. Выводимый по этой команде заголовочный файл имеет имя Яреа)с. Ь и содержит следующее: // тю НОТ ЕП1т ти18 Р1ЬŠ— Ьа 1в пасвапе депегасе<т -*- с++ -*- «ьгпдее Яреа)< «еегьпе Яреа)< Мргадша 1псеггасе ()1пс1исе <Зача/1апд/ОЬЗесС.Ь> егеегп " тача"' ( с1авв Яреаа/ )' с1авв к:Яреа)<: риььас ккэача:ктапдьзОЬЗесе риь11с: // асеиа11у раскаде-рг1часе Яреаа ()/ риЬ11с: чагеиа1 чоЫ весясгапд (::зача:ктапд::ясгьпд *); чагсиа1 чоЫ ввоивег3пд [)/ ривтьс: // асеиа11у расиаде-ргьчаее ::Зача::1апд::Яегьпд *всг1пд/ риь11с: веасас::Зача::1апд::С1авв с1аввам ); МепМТ /* Яреа)< >/ Как видите, заголовочный файл Яреа)с.

Ь содержит определение класса Яреа)с иа языке С++. Поэтому он может непосредственно быть включен в программу на С++ директивой Мапс1ибе. Вот пример такой программы: /* спьвреак.срр */ $1псзиде <доз/сп1.Ь> Мтпс1иде "Яреа)<.Ь" 1пс ва(п(ьпс агдс, сЬаг *агдч) ( Зачаз:1апд:квегьпд <всг/ очсгеасетачачи(нпьь)/ тчасвасЬСиггепСТЬгеад(НПЬЬ,ИОЬЬ)/ Яреаа *вреаа = пеи Яраса()/ вреаи->весвсгьпд(пчиеиасгапдьасьп1("НЕ11о Егоа СН1 Ео Дача" ))/ 20б Часть и.

Использование Сборного Компилятора ереах->еноввсг1пдО," дчпесасьсигтепттьтеа<)()/ ) Программа в основном такая же, что и рассмотренная ранее сп1встоис.срр. Включаемый заголовочный файл СЫ дои /спй.Ь в свою очередь включает файлы с определениями всех необходимых /ага-классов.

Эти классы могут загружаться и их методы могут выполняться после инициализации среды виртуальной машины Уача и присоединения к ней текущего процесса. Ключевое слово пеьг применено для вызова конструктора класса яреа)с и получения адреса нового объекта яреа)с. Далее вызывается метод веСЯСгйпд() для сохранения нового объекта ястйпд в объекте яреа)е. Затем вызывается метод вьомясгйпд ( ) для вывода содержащейся в объекте яреа)е строки. Следующая команда выполнит компиляцию и компоновку программы: Ф д++ спьереак.срр Вреа)<.с1аев -1дс~ -о сп1ереа)< Обработка исключений Исключения, порождаемые /ага-объектами, могут перехватываться и обрабатываться программой на языке С++. Давайте рассмотрим следующий пример; /* сп1ехсерс1оп.срр */ Ф1пс1иае <дс5/сп1.Ь> Фьпстиде <Зача/1апд/Вуатев.Ь> Яапс1иде <Зача/ьо/Ргьпеатгеюи.Ь> Вьпс1иие <Зача/1апд/яхсертгоп.Ь> ие».пд павеерасе зача::1апд; ьпе ва1п(ьпс атдс, сЬаг *агдч] ( дчстеаеелачачи(нпьь)~ дчаттасЬСигтепттигеао(НПЬЬ, ЬПтЬЬ)/ е у ( всг1пд «вееааде = зчиеввстьпдьатьп1(«ие11о тгов сн1")/ Вуесев::оис->ргьпт1п(вееваде)/ ) саесЬ(яхсерььоп «е) ( е->рг1птатасвттасе()г ) очпесасьситгепттьгеа<)(); Как и другие примеры использования интерфейса СМ эта программа также начинается с инициализации среды выполнения виртуальной машины lача и заканчивается освобождением в ней процесса, созданного этой программой.

Оператор ив1пд павеврасе используется для определения пространства имен зача::1апд, что обеспечивает автоматическое разрешение таких имен классов как ясг1пд, яуасев я ихсерс1оп без указания их полного имени. Блоки сту и сассЬ написаны в тех же правилах, которые применяются к классам /ага. При создании объекта ихсерсйоп в блоке егу он будет перехвачен опе- Глава 10. Совмещение языков 207 типы данных интерфейса Сй! В языках С++ и зава применяются в основном сходные типы данных, но все же отличия существуют.

Благодаря очень точному определению применяемых в языке зава типов возможно использование в коде на языке С++ команды бурестой для объявления данных, предназначенных к обработке в зауа-интерфейсе. Применяемые в СХ1 базовые типы зава перечислены ниже в таблице 10.1. Таблица 10.1. Основные типы данных, определенные в Сб!1-инте фейсе Гии Зава Тии С++ Оииввиив 16-битное представление буквенного символа в формате по~свае аоъаг овак Логическая переменная, которая может иметь значение тгпв или ва1ва Ьоо1еап аьоо1аап 8-битное целое число со знаком аьусе звьогс 16-битное целое число со знаком 32-битное целое число со знаком 64-битное целое число со знаком 32-битное !ЕЕЕ представление числа с плавающей точкой 64-битное!ЕЕЕ представление числа с плавающей точкой указатель на экземпляр любого типа вьогс аяпк 1пс 1опд а1опа ая1оас ааоеь1а уояа 11оап СопЬзе Совмещение языков 3ача и С Интерфейс ЛП ("Зауа )Ча1!уе 1п1егГасе") применяется для взаимодействия между кяассами, выполняющимися в виртуальной машине 3ауа (ЛгМ), н исполнимыми системными модулями, написанными на языках С, С++ или ассемблере.

Интерфейс разрабатывался для использования в программах на языке зава некоторых специфических для тех или иных платформ возможностей, которые, конечно, не могут быть включены в Гата нз-за требований переносимости написанных на этом языке программ. Именно для этих целей его н следует применять. Использование )Х1 сохраняет переносимость кода зава-программ, но может требовать применения такого системно-ориентированного (паите) кода, который распознает и учитывает особенности конкретных платформ. Применение системно-ориентированного метода в классе 1ача Распространенный способ объединения программ на языках lауа н С заключается в создании зава-классов, содержащих методы, реализованные на языке С.

Впрочем, не только С, для этой цели годятся и С++, и ассемблер. В нашем примере сохвется простой зава-класс, содержащий всего один метод, реализованный на языке С. ратором свесь. затем будут распечатаны данные трассировки отака (81асй стасе), опи- сывающие расположение вызвавших исключение инструкций. 208 Часть (1. Использование Сборного Компилятора Приведенный далее класс с именем не11онаетче содержит метод паап ( ), в свою очередь использующий метод на языке системного уровня для вывода строки буквенных символов. Системно-ориентированный метод объявлен как составляющая часть /ага-класса, но тело его определения написано на другом языке и потому не приводится в исходном коде программы.

Также класс включает в себя статический ннициализатор, использующий системный метод ьоабь1Ьгагу() для загрузки динамической (разделяемой) библиотеки. Это и есть та библиотека, которая содержит тело метода, реализованного на системно-ориентированном языке. Дальше — пример программы на языке /ага: /* Не11онае1че.бача */ риЬ11с с1авв Не11онасаче ( веаеьс ( вувееа.1оасъььгагу("11ьвреа)г.во")т ) рииаьс всасьс чова ша1п(агг1пд агд[)) ( не11онае1че ьп = пои не11онаеьче()т Ьп.вауне11о()т ) риь11с пае1че чо1о вауне11о()~ ) Для компиляции не11онаетче. 5 ача в файл класса не11омае1че.

с1ав в можно использовать следующую команду: $ доз -с не11онаеьче.дача Заголовочный файл прототипа функции С, которая используется Уача-классом не11онаетче, создается из файла не11онаетче. с1авв командой дсзЬ с опцией -зп1. Вот пример такой команды: а дс5Ь -Зп1 Не11онавьче Результатом выполнения этой команды будет файл не11онаетче.

Ь со следующим содержанием: /* ро нот нртт тита утъв — 1е ьв аасньпе депегасее */ ватпдет Не11онас1че ()дег1пе Не11онасгче В1пс1исе <зп1.Ь> Вьгеег ср1ивр1ив ехеегп «с« ( вепстьй ехеегп чоьд дача не11онаеьче вауне11о (днхепч «епч, зоь(есе) вьтоег ср1ивр1пв Вепсьт Мепс1г /* не11онае1че «/ Глава 10.

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

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

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

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