Из типографии вышел перевод очередной версии книги "Программирование. Принципы и практика использования C++", написанной Беарне Стровструпом - создателем языка C++. Поскольку на сайте автора я не нашёл информации об изменениях в новой книге, то сравнил оригинальные содержания предыдущего и нового издания этой книги.
Программирование, настройка и администрирование CAD систем
Показаны сообщения с ярлыком Cpp. Показать все сообщения
Показаны сообщения с ярлыком Cpp. Показать все сообщения
пятница, 11 декабря 2015 г.
вторник, 1 декабря 2015 г.
DETAILED_ERROR - расширенная информация об ошибке
Выложил на Bitbucket исходный код функции detailed_error и макроса DETAILED_ERROR, использующего её. Они позволяют сгенерировать исключение runtime_exception с нужным сообщением об ошибке, к которому автоматически добавляется информация, позволяющая понять - где именно в исходном коде произошло исключение. Наличие информации о дате компиляции позволяет узнать, какой commit проекта следует смотреть, дабы получить нужную версию файла исходного кода. Предоставляемая информация о разрядности приложения и о версии компилятора так же может быть полезной в ряде случаев.
среда, 11 ноября 2015 г.
Быстрый способ проверить наличие запущенного процесса acad.exe или accoreconsole.exe
То, что предоставлено в данной заметке не является документированным способом и получено на основе анализирования состава мьютексов, создаваемых и используемых AutoCAD в процессе своей работы. Способ применим как к acad.exe, так и к accoreconsole.exe. Проверялся с AutoCAD 2009-2016 x64, а так же с AutoCAD 2008 x86, запущенном в Windows x64. Решение продемонстрировано в двух вариантах: C++ и C#.
вторник, 3 ноября 2015 г.
Открытие и закрытие консольного окна для GUI-приложения
Работая с GUI приложением иногда бывает удобно в режиме реального времени посмотреть, что оно отправляет себе на консоль (т.е. в потоки stdout и stderr), а порой может возникнуть и желание что-то отправить в поток stdin с клавиатуры. Можно, конечно же, выполнять перенаправление в файлы, но этот вариант не всегда удобен. В данной заметке, на примере AutoCAD, показано, как для GUI-приложения открыть консольное окно, выполнить перенаправление потоков и, после того как консольное окно не будет нужно, закрыть его.
понедельник, 2 ноября 2015 г.
Пример создания именованных объектов ядра ОС в разных пространствах имён
Маленькая шпаргалка-пример на тему совместного использования именованных объектов ядра несколькими процессами. Показан вариант размещения именованных объектов ядра в глобальном, локальном и приватном пространствах имён.
четверг, 12 сентября 2013 г.
О влиянии исключений на производительность в C++
Несколько лет назад я сравнивал производительность кода, использующего Exceptions в .NET, и кода, работающего в обход такой обработки. Результаты опубликовывал здесь. Как видим, разница была колоссальная: 5мин. 30 сек., против 0,7 сек. К сожалению, в C++ обработка исключений так же является весьма накладным занятием...
воскресенье, 18 августа 2013 г.
Установка ARXWizard 2009 в Windows 7
Маленькая шпаргалка на тему того, как в Windows 7 успешно установить ARXWizard для MS Visual Studio 2005. Необходимость столь старой версии IDE обусловлена тем, что ARX плагины для AutoCAD 2009 (до сих пор используемой в нашей организации), пишутся именно с использованием её инструментов. нужно предварительно выполнить пару дополнительных шагов, для того, чтобы MSI пакет отработал должным образом и ARX шаблон проекта появился в перечне IDE.
четверг, 15 августа 2013 г.
Создание DLL файла ресурсов для Partial CUI файла
Графические изображения, которые используются в CUI файлах, могут браться как из внешних BMP файлов, так и из неуправляемого DLL файла ресурсов, в который эти изображения помещены. Второй способ более удобен в использовании. В этой записи я покажу, как создавать такие DLL файлы и как их использовать в CUI файлах.
среда, 7 августа 2013 г.
VS 2008 SP1: Error result 1 returned from 'C:\Windows\system32\cmd.exe'.
Дабы иметь возможность писать плагины под AutoCAD не только на .NET, но и на C++, мне пришлось установить на компьютер сразу несколько версий IDE, т.к. каждой версии AutoCAD соответствует своя версия MS Visual Studio. Поскольку мои юзеры в большинстве своём используют AutoCAD 2009, то и установить пришлось версии, начиная с 2005-й, т.е.: 2005, 2008, 2010 и 2012. Для начала пришлось снести уже установленную версию VS 2012, дабы избежать проблем при установке, после чего установил все версии в порядке старшинства, начиная с самой древней и заканчивая наиболее свежей. Всё установилось без проблем. Однако, в процессе написания на C++ тестового "Hello World", при сборке проекта в среде VS 2008 SP1, вылезли неожиданные подводные камни (в MS VS 2010 подобных проблем не возникло). Вот об этом собственно и собираюсь написать.
пятница, 2 августа 2013 г.
Использование в коде C библиотек, написанных на C++
На C++ можно писать библиотеки, которые можно было бы использовать в др. языках программирования, в т.ч. не являющихся объектно ориентированными. В частности, меня интересовал вопрос о написании на C++ таких библиотек, которыми можно было бы воспользоваться в C. Я в курсе о том, что следует использовать extern "C", однако этим дело не заканчивается, поскольку по ходу реализации такой библиотеки выявляется большое количество подводных камней, которые следует как-то обходить.
суббота, 6 июля 2013 г.
Сборка MS Visual C++ проекта под платформу x64
Для того, чтобы скомпилировать MS Visual C++ проект под платформу x64, в настройках этого проекта потребуется выполнить несколько больше изменений, чем это обычно потребовалось бы для проекта написанного, к примеру, на .NET.
вторник, 2 июля 2013 г.
Объём утечки памяти при выделении её с помощью new для нулевого количества байт
Заинтересовал такой вопрос: если используя оператор new выделить память для массива, указав в качестве его размера значение 0, после чего не вызывать оператор delete, то будет ли утечка памяти, и если будет то в каком объёме?
суббота, 29 июня 2013 г.
Создание DLL консольными средствами Visual Studio
MS Visual Studio имеет графический интерфейс для разработки приложений и управления их проектами и решениями. Однако за кулисами всё выполняется консольными утилитами, так же входящими в состав этой IDE. В данной заметке я покажу маленький пример создания dll файла консольными средствами MS Visual Studio, с последующим его использованием в другом приложении. В качестве языка программирования использован C++. Весь приведённый ниже программный код можно набирать в любом текстовом редакторе (я использовал Notepad++).
среда, 19 июня 2013 г.
Баг компилятора MS Visual Studio 2012
Недавно наткнулся в MS Visual Studio 2012 на неприятный баг... Обозначенная в данной теме ошибка компилятора MS Visual Studio 2012 не является смертельной и её можно обойти (ниже способ будет указан), однако она опасна, т.к. наличие оной может неожиданно привести либо к неправильной работе программы (если в глобальном пространстве имён компилятором будет обнаружена другая функция с такой же сигнатурой, пусть даже не вами объявленная), либо, в противном случае, выдаст ошибку времени редактирования связей.
вторник, 21 мая 2013 г.
Генеральному Директору Издательства "ДИАЛЕКТИКА-ВИЛЬЯМС" Виктору Штонду
Доброго времени суток, Виктор.
Данное сообщение опубликовываю в своём блоге, и даю Вам на него ссылку, т.к. в Вашем блоге установлено ограничение на количество вводимых символов в комментариях, а адреса Вашей электронной почты не знаю. Я занимаюсь программированием, в виду чего, время от времени, покупаю книги этого направления, в т.ч. и книги Вашего издательства. Информация, изложенная ниже, относится к качеству перевода, а так же к исправлениям ошибок, публикуемых авторами книг.
Подписаться на:
Сообщения (Atom)