Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Дисциплины:
2021-01-29 | 83 |
5.00
из
|
Заказать работу |
|
|
Перевод во множественном числе доставляет дополнительные трудности. Простой код мог бы выглядеть примерно так:
Это подходит для английского языка, но перевод становится трудным. Во‑первых, во многих языках множественное число не образуется с такой же легкостью, как в английском (добавлением суффикса для большинства слов). Во‑вторых, во многих языках, особенно в Восточной Европе, имеются несколько форм множественного числа, каждая из которых указывает на то, сколько объектов обозначает форма. Соответственно даже код наподобие следующего не будет достаточным:
Решением является параллельный набор процедур специально для форматирования множественных значений:
Помимо первоначального аргумента, эти функции принимают дополнительные аргументы:
Строка по умолчанию для использования в качестве множественного числа. Вскоре будут примеры.
Число имеющихся элементов.
Список сообщений каждой локали указывает, как переводить множественные числа.[145] Функция (и ее варианты) проверяет и на основании спецификации в списке сообщений возвращает соответствующий перевод. Если в списке нет перевода для, или находясь в локали «С», возвращает, если ''; в противном случае она возвращает. Таким образом, наш пример ошибочных слов выглядит следующим образом:
Обратите внимание, что должен быть передан для выбора форматирующей строки, а затем для форматирования. Вдобавок, будьте осмотрительны и не используйте макрос или выражение, значение которого каждый раз изменяется, как в случае ''! Такое может случиться, если вы осуществляете глобальное редактирование, добавляя вызовы и не обращая на это внимания.
|
Упрощение использования
Вызов в исходном коде программы служит двум целям. Во‑первых, он осуществляет перевод во время исполнения, что является в конце концов главным. Однако, он служит также для отметки строк, которые нужно перевести. Утилита читает исходный код программы и извлекает все оригинальные строки, которые нужно перевести. (Далее в главе мы кратко рассмотрим это.)
Рассмотрим все‑таки случай, когда статические строки не используются непосредственно:
Здесь мы хотели бы иметь возможность вывести переводы строк об авторских правах, если они доступны. Однако, как извлекающее устройство предполагает найти эти строки? Мы не можем заключить их в вызовы, поскольку это не будет работать во время компиляции:
/
13.3.4.1. Переносимые программы: ""
Здесь мы предполагаем, что вы хотите написать программу, которая может использоваться вместе с библиотекой GNU на любой системе Unix, а не только GNU/Linux. Следующий раздел описывает, что сделать для программ только для GNU/Linux.
Пометка строк включает два шага. Первый заключается в использовании вспомогательного заголовка, который поставляется с дистрибутивом GNU. Этот файл обрабатывает несколько проблем переносимости и компиляции, упрощая использование в ваших собственных программах:
Если макрос не определен[146] или установлен в ноль, развертывает вызовы в первый аргумент. Это делает возможным перенос кода, использующего, на системы, в которых не установлены ни GNU, ни собственная их версия. Помимо прочего, этот заголовочный файл определяет следующий макрос:
Комментарий самодостаточен. С помощью этого макроса мы можем теперь перейти ко второму шагу. Мы перепишем код следующим образом:
Обратите внимание, что мы сделали два изменения. Во‑первых, теперь является одной длинной строкой, созданной с использованием возможности конкатенации строк стандартного C. Эта простая строка затем включена в вызов. Нам нужна одна строка, чтобы легальности могли быть переведены в виде одного элемента
|
Второе изменение заключается в непосредственном выводе перевода в виде одной строки в.
К этому времени вы, возможно, думаете: «Вот здорово, набирать каждый раз '' довольно неприятно». Ну, вы правы. Это не только создает лишнюю работу по набиванию, но также и затрудняет чтение исходного кода. Соответственно, когда вы используете заголовочный файл, руководство GNU рекомендует включить два других макроса с именами и следующим образом:
Такой подход снижает накладные расходы по использованию всего лишь тремя дополнительными символами для переводимой строковой константы и всего лишь четырьмя символами для статических строк:
Эти макросы скромны, и на практике все GNU программы, использующие GNU, следуют этому соглашению. Если вы собираетесь использовать GNU, вам тоже нужно следовать этому соглашению.
Только GLIBC:
Для программ, которые будут использоваться лишь на системах с GLIBC, использование заголовочных файлов и макросов похоже, но проще:
Как мы видели ранее, заголовочный файл объявляет и другие функции. Вам все равно нужно определять и, но не нужно беспокоиться о или включении с исходным кодом вашей программы файла.
|
|
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!