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

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

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

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

айЬ; -- айавранп.айЬ нхТЬ Яранп( ргосейиге Айаяранп хв рйй : Хпеедегу веаеив : Хпеедег; Ьедхп рйй := ирана.всагергосевв("ЕХех"); всаеив := Яранп.вТорргосевв(рхй); епй Айааранпг В главной процедуре выполняется вызов функции веагТРгосевв (), ей передается имя программы для выполнения. Функция возвращает идентификатор запущенной фоновой задачи, который затем используется для остановки этой же задачи функцией ЯТорргосевв () .

Обе функции определены как участники пакета драни в файле вранп. айв; -- вранп.айв рас)теде Яранп Ев йипссхоп веагергосевв(паае : Ясгхпд) гееигп 1пеедегг йипссхоп веорргосевв(рхй : 1пседег) гееигп 1пеедег( епй Яранпг Все передаваемые функциям параметры имеют типы языка Ада. Внутри этих АЫафункций выполняются вызовы функций на языке С. В связи с этим нужно некоторое преобразование данных для гарантии совместимости аргументов. Тела функций втагтргосевв () и вторргосевв () определены в файле вранп.

айЬ: в раап. айЬ нХТЬ Хпеегйасев.С( расиаде Ьойу Яранп хв йипсейоп веагергосевв(паве : Яегхпд) гееигп 1пеедег хв йипсехоп веаге (паве : Яегхпд) геТихп 1пеегйасев.С.хпег Ргадаа 1арогТ(С,всагс)г Ьедйп гесигп 1пеедег(веагТ(паве)); епй веагергосеввг йипсгхоп веорргосевв(рхй : 1пгедег) гееигп 1пседег хв Еипсгхоп вТор(рйй : Хпеедег) гееигп Хпеегйасев.с.хпег ргадаа 1ароге(С,веер); Ьедйп гееигп Хпеедег(веор(РХЯ)); епй веорргосевв; епй Яранп; Глава 10.

Совмещение языкав 2 1 9 Функции всагергосевв () и веорргссевв () действуЮт как оболочки написанных на языке С функций всагс () и втор () . При этом имеет место некоторое преобразование данных. Обе функции С возвращают значения типа хпеегЕасе.С. Епе, которые затем приводятся к типу Хпеедег языката для их последующего возвраа(ения функциями всагсргосевв () и всорРгосевв () . Вот код С функций веагс () и всср(), который находится в файле всагсвсор.

с: а[пс1и<те <ппзвс<[.Ь> Мпс1п<те <е[дпа1.Ь> В[пс1п<)е <еггпс.Ь> [пе есагг(сЬаг *паше) Епс р1<тг сЬаг *агдч[4)г р16 = Еог)<()я ЕЕ(рка == -1) гегпгп(-1); ЕЕ(рад == 0) ( агдч[0) = "8Ь"у агдч[1) = "-с"г агдч[2) = пате> агдч[3) = 0; ехесче("/ЬзпГвЬ",агдч,0); елке(-1) г ) е1ее ( геепгп(р1д)г ) ) [пс есор(апс РЫ) 1Е(к[11(р1П,В1дтани) < 0) геепгп(еггпо)г гесса(0)я ) Функция всагс () выполняет системный вызов Еог)е(), клонирующий текущий процесс. Возвращаемое им значение сообщает, является ли текущий процесс оригинальным процессом или клоном.

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

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

ава Инпиернаиивнаниааиип $1пйегпанвпа!ца1йвп1 л юбая программа, будучи правильно написанной, (и даже сам компилятор СлСС) может запускаться так, что ее интерфейс приспосабливается к местным условиям и языку. Интернационализацией (!п1егпа1!опа!!га1юп) называется внутренняя способность программы или набора программ, составляющих отдельный пакет, поддерживать несколько языков. Локализацией (!оса!!гагюп) называются действия по использованию встроенныз возможностей программы или набора программ, предпринимаемые для преобразования выводимых пользователю текстов к другому национальному языку или стандарту, Такие действия также называются изменениями лакальныхусн1анавак в системных файлах, из которых они считываются и выполняются программами при иь запуске.

!уе5 (")ь)аг!те 1 апяцаяе Яцрроп", поддержка родного языка) — термин, используемый для описания всех операций, необходимых для интернационализации и локализации программ. Часто можно видеть, что в документации вместо термина "интернационализация" ("!пгегпагюпайгабоп") применяется сочетание г18п. Это весьма употребительный и традиционно остроумный способ сокращения английскою термина.

Это сокращение означает, что обозначаемое им длинное английское слово начинается с литеры "х", состоит из 13-ти букв и заканчивается литерои "и". Точно таким же способом и термин "локализация" часто заменяется сокрашением 110п. Можно заметить, что программисты чаше употребляют термин г г во, в то время как переводчики и пользователи обычно используют 1гоп. Глава 11. Интернационализация ([п(егпа([ела[[ха[)оп) 22 1 Пример программы для применения перевода Следующий пример программы содержит нуждающиеся в переводе строки: /» всегеег.с */ «1пс1цбе <1аса1е.п> «1псзпбе <11цьпс1.Ц> «бег[па влсклде "веагеег" «бей1пе ЬОСЛЬЕПтп "/цвг/яцеке/1оса1е" 1пс шаьп(1пс агдс,сЬег «агдтг[)) ( веезасе1е(ьс льь,"")т )т[пбсехеаопаьп(рЛСКЛОЕ,ЬОСЛЬЕрвк); Еехебапв1п(РЛСКЛОЕ)т рг1пек(чвв1п",дессехс("ть1в всг1пд ы111 егапв1аее."))т ) Заголовочный файл 1оса1е.)ь содержит некоторые из основных макроопределений, которые используются для указания подвергаемых локализации типов и залействованных в конвертировании денег структур данных.

Другой заголовочный файл 11ь1пе1. и содержит прототипы функций, необходимых для настройки и прииенения действий интернационализации. В функции ва1п() выполняется вызов вес1оса1е() для указания элементов, к которым применяется интернационализация. Указание ьс льь означает применение интернационализации ко все)к данным. Однако может понадобиться прикеяения ее только к некоторым элементам программы. Вместо одного вызова вее1оса1е () с указанием ьс льь возможно выполнение нескольких вызовов этой $)нкции с указанием отдельных элементов, перечисленных в таблице! !.!.

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

Те же действия могут быть использованы и лля программ на других алгоритмических языках — С++, ОЬ)ее[(уе-С, Ру()топ, [ззр, Етас[ззр, Тау/а и ату)т. 222 Часть )1. Использование Сборного Компилятора Увлвюввв ьс хрввххттсхтзом Форматирование такой информации, как имя, адрес, телефон, адрес электронной почты, номер факса и тд. Применяет локализацию в отношении единиц измерения (метрическая либо английская системы измерений). Применяет локализацию в отношении формализованных текстовых сообщений. ьс мвхвоввмвмт ьс мвввховв Формат представления денежных единиц. Применяет тот или иной формат представления личных имен, включающих инициалы, обращение, сокращенное обращение и положение имени и фамилии. Формат представления чисел, включающих десятичный разделитель и выделение порядков(тысяч).

Стандартный размер бумаги для печати. Формат представления телефонных номеров, включающих префиксы и коды направления, Формат представления в строках времени и даты. ьс моввтхвт ьс мхмв ьс момввтс ьс Рлввв ьс твьвввомв ьс тхмв $6еххпе (а) дессехс(а) При использовании этого макроопределения оператор рт~цей () в нашем примере можно записать следующим образом: рк1пек("тьвтп", ("т)тхв век1пд их11 Скапвхаее."))т Такой способ сокращает количество символов, которые следует добавить для вызова выполняющей перевод функции, до трех (одного символа подчеркивания и двух скобок) В нашем примере две директивы йбеьз'.пе внутри самой программы указывают имя пакета, к которому относится программа, и полное имя каталога, содержащего локальные установки.

Хотя более обычным для этого способом является применение настроек в файле соцйьд.)т или использование опции -г) в командах, генерируемых компоновочным файлом (таКей!е), Для перевода текстовой строки с одного языка на другой, выполняется вызов функции десеехе () . На самом деле существует целое семейство функций деесехс (), это поясняется в следующем разделе. Эти функции запускают утилиту хдессехс для извлечения строки. Строка-оригинал (такая строка показана в примере листинга программы) используется как ключ для поиска соответствующего ей перевода с учетом действующих установок локализации. Если соответствий ей не найдено, то используется сама строка-оригинал. Значение, возвращаемое функцией деееехе (), имеет тип символьной строки.

Таким образом, в нашем примере оператор ртьпсй () просто выводит строку, возвращаемую функцией дессехс () независимо от того, была она переведена или нет. При программировании и для преобразования существующих программ удобно использовать короткое макроопределение, заменяющее употребление имени деееехе ( ) . Например, вызов функции можно сократить до знака подчеркивания, применив следующее макроопределение: Глава 11.

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

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

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

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