Директивы Pragma и __pragma _Pragma ключевые слова
Директивы Pragma указывают функции компилятора, зависящие от компьютера или операционной системы. Строка, начинающаяся с #pragma указания директивы pragma . Ключевое слово, определенное __pragma корпорацией Майкрософт, позволяет кодировать pragma директивы в определениях макросов. Стандартный _Pragma оператор препроцессора, представленный в C99 и принятый C++11, аналогичен.
Синтаксис
#pragma Строка токена
__pragma( Строка ) токена два ведущих символа подчеркивания — расширение, зависящее от Майкрософт
_Pragma( строковый литерал ) C99
Комментарии
Каждая реализация C и C++ поддерживает некоторые возможности, уникальные для хост-компьютера или операционной системы. Некоторые программы, например, должны осуществлять точный контроль над расположением данных в памяти или управлять способом получения определенных функций. #pragma Директивы позволяют каждому компилятору предлагать функции, зависящие от компьютера и операционной системы, сохраняя при этом общую совместимость с языками C и C++.
C++ Урок 77. pragma
Директивы Pragma зависят от компьютера или операционной системы по определению и обычно отличаются для каждого компилятора. A pragma можно использовать в условной директиве для предоставления новых функциональных возможностей препроцессора. Или используйте его для предоставления компилятору сведений, определенных реализацией.
Строка токена представляет собой ряд символов, представляющих определенную инструкцию и аргументы компилятора, если таковые есть. Знак номера ( # ) должен быть первым символом, не содержащим пробел, в строке, содержащей символ pragma. Пробелы могут разделять знак номера и слово «pragma». После этого #pragma напишите любой текст, который переводчик может проанализировать как маркеры предварительной обработки. Аргумент, подлежащий #pragma расширению макроса.
Строковый литерал — это входные данные _Pragma . Внешние кавычки и начальные или конечные пробелы удаляются. » заменяется » на и \ заменяется на .
Компилятор выдает предупреждение при обнаружении pragma того, что он не распознает и продолжает компиляцию.
Компиляторы Microsoft C и C++ распознают следующие pragma директивы:
1 Поддерживается только компилятором C++.
Директивы Pragma и параметры компилятора
Некоторые pragma директивы предоставляют те же функции, что и параметры компилятора. pragma Когда достигается в исходном коде, он переопределяет поведение, заданное параметром компилятора. Например, если вы указали /Zp8 , можно переопределить этот параметр компилятора для определенных разделов кода с помощью pack :
cl /Zp8 some_file.cpp
// some_file.cpp — packing is 8 // . #pragma pack(push, 1) — packing is now 1 // . #pragma pack(pop) — packing is 8 again // .
Ключевое слово __pragma .
Компилятор также поддерживает ключевое слово, определенное __pragma корпорацией Майкрософт, которое имеет те же функции, что и директива #pragma . Разница заключается в том, что ключевое __pragma слово является пригодным для использования встроенным в определении макроса. The #pragma directive isn’t usable in a macro definition, because the compiler interprets the number sign character (‘#’) in the directive as the stringizing operator (#).
Многофайловый проект | Защита от повторного включения | Изучение С++ для начинающих. Урок #140
В следующем примере кода показано, как __pragma ключевое слово можно использовать в макросе. Этот код фрагментируется из заголовка mfcdual.h в примере ACDUAL в разделе «Примеры поддержки COM компилятора».
#define CATCH_ALL_DUAL CATCH(COleException, e) < _hr = e->m_sc; > AND_CATCH_ALL(e) < __pragma(warning(push)) __pragma(warning(disable:6246)) /*disable _ctlState prefast warning*/ AFX_MANAGE_STATE(pThis->m_pModuleState); __pragma(warning(pop)) _hr = DualHandleException(_riidSource, e); > END_CATCH_ALL return _hr;
Оператор _Pragma предварительной обработки
_Pragma похож на ключевое слово, определенное __pragma корпорацией Майкрософт. Он был введен в стандарт C в C99 и стандарт C++ в C++11.
Он доступен в C только при указании /std:c11 или /std:c17 параметра. Для C++ он доступен во всех /std режимах, включая значение по умолчанию.
В отличие от #pragma этого, _Pragma можно поместить pragma директивы в определение макроса. Строковый литерал должен быть тем, что в противном случае следует поместить после инструкции #pragma . Пример:
#pragma message(«the #pragma way») _Pragma («message( «the _Pragma way»)»)
Кавычки и косые черты должны быть экранированы, как показано выше. Не распознаваемая pragma строка игнорируется.
В следующем примере кода показано, как _Pragma ключевое слово может использоваться в макросе assert-like. Он создает директиву pragma , которая подавляет предупреждение, когда выражение условия будет константой.
Определение макроса использует do . while(0) идиом для макросов с несколькими операторами, чтобы его можно было использовать так, как если бы это было одно утверждение. Дополнительные сведения см. в статье О многострочный макрос C в Stack Overflow. Инструкция _Pragma в примере применяется только к следующей строке кода.
// Compile with /W4 #include #include #define MY_ASSERT(BOOL_EXPRESSION) do < _Pragma(«warning(suppress: 4127)») /* C4127 conditional expression is constant */ if (!(BOOL_EXPRESSION)) < printf(«MY_ASSERT FAILED: «» #BOOL_EXPRESSION «» on %s(%d)», __FILE__, __LINE__); exit(-1); > > while (0) int main()
Источник: learn.microsoft.com
PRAGMAтичный переводчик
Проблема языкового барьера стояла перед людьми во все времена. Во времена давно минувшие главным средством преодоления его были словари. В наши дни на смену им приходит всё большее число систем машинного перевода. С одной из них мы познакомимся сегодня.
Анамнез
Как вы знаете, качество машинного перевода даже у таких монстров, как PROMT, оставляет желать лучшего. А значит польза от установки и содержания на винчестере громоздких пакетов – дело весьма сомнительное. К тому же, при работе с такими программами каждый раз приходится копировать текст в окно программы-переводчика, а потом — возвращать на место результат.
Описанных недостатков нет у программы, которая сегодня попала на наш операционный Рабочий стол. Называется эта программа Pragma. Точнее – Pragma 5.x. Как можно догадаться, глядя на номер версии, это далеко не новая разработка. Действительно, детищу украинских программистов из «Трайдент Софтвер» уже почти восемь лет, однако предыдущие версии не привлекали к себе особого внимания.
Нет, внимание мы на них, безусловно, обращали – хотя бы в силу своего природного любопытства, однако ничего достойного полноценного обзора в них не увидели – слишком уж узкой была сфера применения (поддерживался перевод лишь в нескольких распространённых программах). И вот недавно увидела свет новая, пятая по счёту, версия Pragma, в которой разработчики заметно изменили подход к функциям переводчика, сделав возможным его использование совместно с гораздо большим числом популярных программам. Впрочем, обо всём по порядку.
Беглый осмотр
Как уже было отмечено, принцип действия Pragma отличается от переводчиков типа PROMT. Более того, Pragma не похожа и на электронные словари вроде Lingvo. Фактически, у неё даже нет окна, в которое можно ввести текст для перевода. А если нет окна, то что же она делает? Правильно – пользуется окнами других программ.
Pragma просто берёт текст из активного окна, переводит его и возвращает туда, откуда взяла. В переведённом виде. Выглядит всё это как интересный фокус, хотя на самом деле – это просто умелое обращение с функциями WinAPI.
Собственно перевод осуществляется при помощи словарей, которые необходимо скачать (в дистрибутив не входят!) с сайта программы. Всего словарей семь – для русского, английского, французского, немецкого, украинского, польского и латышского языков. Такая модульная структура положительным образом сказывается на размерах дистрибутива.
К примеру, русский словарь (его необходимо скачать обязательно!) весит 5 Мбайт, а английский – всего 2 Мбайт. Соответственно, для получения англо-русской версии переводчика придётся загрузить всего около 10 Мбайт (в сумме с основным дистрибутивом). Согласитесь, на фоне PROMT и Lingvo это сущие крохи.
Увы, всё это счастье далеко не бесплатно. За версию Pragma 5.2 (последняя циферка означает количество словарей) – скажем, за упомянутую уже англо-русскую – придётся выложить 3100 рублей, что на 200 рублей больше стоимости PROMT Standard 8.0, включающего в себя шесть языков перевода. Версия Pragma с аналогичным числом словарей обойдётся в целых 6,5 тыс. рублей. Что же, за удобство приходится платить.
Скальпель!
Но это всё – теория. Теперь давайте копнём поглубже и посмотрим, как же строится работа с Pragma на практике.
После установки программы в трее появляется значок, при щелчке на котором открывается панель перевода (см. рисунок). В этом окне вы можете выбрать языки и примерную тематику текста. После этого достаточно нажать кнопку «Перевод текста» – и в самом верхнем окне на вашем экране он будет переведён. При условии, конечно, что окно это «знакомо» Pragma.
А знает она не так уж и мало: Microsoft Word всех версий (97/2000/XP/2003/2007), OpenOffice версии 1.1 и выше, StarOffice версии 6.1 и выше, приложения, использующие движок Internet Explorer (в том числе — программа просмотра файлов справки CHM), приложения со стандартными полями редактирования текста (WordPad, Блокнот и др.). Даже если программа не поддерживается Pragma, есть возможность перевести текст, скопировав его в буфер обмена.
Перевод осуществляется довольно быстро (одна страница текста в Word – буквально за пару секунд), после чего, как и было обещано разработчиками, текст возвращается на место.
Тампон!
Самый главный вопрос, который волнует пользователей систем машинного перевода – качество. Сказать можно одно: у Pragma оно не лучше и не хуже, чем, скажем, у PROMT. Какие-то фразы лучше переводит один, какие-то – другой. На нашем сайте вы можете найти образцы, полученные в ходе тестирования Pragma и самостоятельно сделать для себя выводы.
Эпикриз
Несомненно, Pragma имеет право на жизнь. Более того, на жизнь на компьютерах многих пользователей. Однако какой именно категории пользователей – сказать трудно. Наверное, каждый потенциальный покупатель Pragma должен для начала задуматься, что ему важнее: малый вес и удобство использования или что-то иное…
Источник: petrochenko.ru
Pragma
Pragma — программа предназначена для машинного перевода текстовых документов с одного языка на другой из восьми доступных. В программу интегрированы русский, украинский, английский, немецкий, латышский, польский, французский и казахский словари. Перевод осуществляется между двумя любыми языками.
Программа позволяет выполнять перевод непосредственно в окне активного приложения или в отдельном окне быстрого перевода. Pragma может переводить текстовые документы, интернет страницы, почтовые сообщения, справки и другую текстовую информацию.
Малый размер установочного пакета переводчика обуславливается тем, что в него не включены словари для перевода. Поэтому после установки переводчика необходимо загрузить через программу необходимые для перевода словари.
Скриншоты:
Лицензия: | Условно бесплатная |
Системы: | Windows 7, Vista, XP |
Русский язык: | Да |
Разработчик: | Trident Software |
Обновлено: | 12.10.2016 |
Источник: monobit.ru
переводчик Pragma 6.0.101.71
Ядро перевода переводчика Pragma использует многоязычную технологию нового поколения, которая комбинирует лучшие идеи из старого двунаправленного подхода и нового многонаправленного.
Pragma имеет модульную организацию языков. Словари, грамматики, орфография и вспомогательные файлы упакованы в отдельные модули для каждого языка. Этот метод позволяет легко манипулировать программной конфигурацией для различных практических потребностей. Например, если вам нужен англо-русский переводчик, вы берете три блока — базовый, английский и русский модули.
Все комбинации направлений перевода взаимозаменяемы, кроме англо-русской пары. Эта пара — главный мост между романо-германской и словянской группами. Так украино-английский перевод выполняется частично напрямую, но в большей части по русско-английскому направлению. Такой подход позволяет уменьшить количество связей для перевода между различными языками.
Главная проблема перевода — многозначность слов — решена двумя способами. Прежде всего — специальная маркировка слов по тематической направленности (около сотни тематик). Во-вторых — объединение слов в фразы, которые имеют высший приоритет во время перевода.
Нет никаких отдельных тематических словарей. В главном переводном словаре отмечены некоторые многозначные слова. Имеется только дополнительный (необязательный) словарь специальной терминологии, где собраны слова из соответствующих областей, как например медицина, химия, математика, нефтегазовая, и т.п. (всего до 50 тематик).
Кроме всего этого пользователь имеет возможность вести словарь пользователя, который имеет самый высокий приоритет.
Pragma 6.x даже не встраивается в чужие приложения. Она начинает взаимодействовать с активным приложением только после щелчка мышки по иконке монитора [#]. Пользователь может настроить программу под свои условия и спрятать промежуточные диалоговые окна. Это позволит переводить документы по одному щелчку мыши.
Pragma 5.x и Pragma 6.x не имеют никакой отдельной программы. Программы только расширяют функциональность существующих известных приложений, добавляя в них функцию перевода. Pragma Монитор это инструмент для управления программой, и он доступен через свою иконку [#] расположенную рядом с системными часами.
Pragma 5/6.x имеет модульную структуру:
* Базовый модуль (обязательный)
* Английский модуль
* Немецкий модуль
* Французский модуль
* Латышский модуль
* Русский модуль
* Украинский модуль
* Словарь спецтерминов
* Польский модуль
* Казахский модуль (только в Pragma 6.x)
Имя пакета Pragma зависит от включаемых языковых модулей. Последняя цифра имени — количество языков. Например, Pragma 6.2 — включает два языка. Это может быть англо-русский, русско-украинский или любая другая пара. Pragma 6.3 — включает три языковых модуля, и так далее.
Наличие словарей спецтерминов отображается в названии программы в виде плюса. Pragma 6.x+ или Pragma 6.x Plus.
Программа подгружает все требуемые словари автоматически.
Что нового в Pragma 6.x
Главным усовершенствованием Pragma 6.x является перевод продукта в кодировку Юникод. Благодаря этому, ядро переводчика теперь может работать с расширенными алфавитами, что дало возможность разработать казахский модуль перевода. Это решение привело также к повышению скорости переводчика.
Недостатком, хотя и незначительным, является увеличение объема языковых модулей примерно в полтора раза. Также, теперь не поддерживаются Windows 95/98/Me. Для этих ОС необходимо использовать программу Pragma 5.x.
Некоторые изменения заметны и в интерфейсной части программы. Pragma 6.x поддерживает все последние версии офисных и Интернет приложений.
Pragma 6.x начиная с редакции 6.0.101.1 поддерживает 64-разрядные приложения.
Pragma распространяются как shareware и имеют 2х-недельный ознакомительный период.
Последние комментарии:
123 16-11-2016 05:26
а есть англ на казахский?
gavhar 16-08-2016 20:34
проста класс
gavhar 16-08-2016 20:30
юлия 24-02-2016 15:32
юс 31-01-2016 22:46
Я пользуюсь Вашим словарём уже 8 лет! Он был у меня на икс пи, на висте и на семёрке. Супер, спасибо большое! Я просил Вас разработать такой переводчик на виндовс 6.1 (когда это было актуально), чего-то Вы не захотели. Ну 6.1 уже кануло в лету, но почему Вы на дроиде не хотите разработать.
Толковый транслятор, я бы хотел иметь себе такой на планшетке.
Olga 10-01-2016 12:27
Уже час качает. когда будет конец , не знаю. Видимо, блокируется антивирусом.
mumin 03-01-2016 14:43
Мне очень нужно программа переводчик Прагма
Буба 20-05-2015 11:58
Андрей 16-10-2014 20:16
Всё-таки какойто червячёк имеется, анетивирус блокирует загрузку.
Возможно у вас стоит самая высокая степень защиты и фаилы у которых нет цифровой лицензии не скачаются до тех пор пока уровень защиты не будет понижен или защита не будет выключена на время скачивания фаила.
анжела 07-05-2015 09:04
нечего интересного
К12 14-04-2015 11:37
Каким антивирусом блокируется программа?
Я проверял архив на virustotal — ни один из 57-ми антивирусов ничего подозрительного не нашел!
Источник: programki.net
Pragma 6.0.101.71
В левом меню вы можете скачать Pragma 6.0.101.71 бесплатно, без регистрации и ввода смс. Ссылка на скачивание прямая, поэтому вам не придется ожидать, загрузка Pragma начнется сразу же автоматически, без перехода на другую страницу. Размер программы составляет 4.88 Мб
Pragma — система машинного перевода. Pragma поддерживает восемь языков, в том числе английский, русский, украинский, немецкий и др. Перевод возможен между любой парой из этих языков. Число возможных направлений перевода составляет 56.
Выполняет перевод непосредственно в окне активного приложения или в отдельном окне быстрого перевода. С помощью программы можно переводить текстовую информацию, представленную в виде документов MS Word, Интернет страниц, почтовых сообщений, справок, а также содержимое различных текстовых окон. За счет автоматизации многих функций Pragma очень проста в использовании.
Pragma имеет незначительный размер, поскольку не включает переводные словари. После установки программы необходимо выбрать режим обновления и загрузить необходимые модули словарей.
Источник: 4see.ru