Некоторое время назад я написал несколько статей о различных трюках, применявшихся в операционной системе DOS, чтобы вписаться в те жёсткие лимиты памяти, которые действовали в реальном режиме на архитектуре x86. Постоянно возникал и оставался без ответа один вопрос: а каковы были различные «модели», которые предлагались компиляторами тех времён? Взгляните, как выглядело меню для генерации кода в Borland Turbo C++:
Рубрика «c++»
Ещё раз о моделях памяти, применявшихся в DOS
2025-02-08 в 8:05, admin, рубрики: 8086, borland, c++, dos, exe, microsoft, timeweb_статьи_перевод, x86, ОЗУmodern-cpp-kafka для C++. Решаем проблемы владения и сериализации
2025-02-06 в 12:16, admin, рубрики: c++, десериализация, сериализацияДоброго времени суток! Эта статья написана для тех, кто в общих чертах знаком с тем, что такое и для чего используется Apache Kafka, кто такие Producer и Consumer и как они друг с другом работают. Целью этой статьи является показать способ использования библиотеки modern-cpp-kafka
для работы с Apache Kafka на современном C++. В общих чертах с темой можно ознакомится, например, здесь (отсюда же взяты скриншоты), а в этой статье будет рассмотрено решение проблем с владением и (де)сериализацией наиболее простым способом.
Редкая задача в программировании решается без контейнеров. В C++
наиболее часто используемый контейнер - std::vector
(возможно кто-то не согласится и скажет: "Зачем std::vector, когда есть boost", но это дела не меняет).
При работе с std::vector
часто возникает задача - удалить из него элемент (или несколько элементов). На помощь приходит метод erase
. И это работает! Но иногда мы можем столкнуться с ситуацией, когда что-то идёт не так.
Что же может пойти не так?
Рассмотрим небольшой пример. Исходный код лежит в репозитории.
С чего начиналось
Game++. Dancing with allocators
2025-01-30 в 17:46, admin, рубрики: c++, Игры и игровые приставки, ненормальное программирование, Программирование, разработка игрВступление
Всем привет
Меня всегда интересовала тема рефлексии в языках программирования, и то, какие программы можно создавать с ее помощью. Рефлексия — это мощный инструмент, позволяющий работать с программой не как с набором логических объектов (в случае использования ООП), а как с набором свойств и методов из которых они состоят. Такой подход дает возможность создавать алгоритмы, которые могут работать с любыми типами данных, для которых включена поддержка рефлексии.
Пишем легаси с нуля на С++, не вызывая подозрение у санитаров. 05 — GDI рендер
2025-01-29 в 12:05, admin, рубрики: c++Приветствую, читатели!
Основная репа RetroFan.
Так как проект пухнет строчками кода. Я встроил поддержку обработки ошибок. Так как я намеренно не использую исключения, то требуется некий альтернативный подход. Мне не очень нравится идеология принятая в Windows, libc или SDL2. При вызове функции, проверяют её возвращаемое значение и если значение соответствует коду ошибки, то для подробной информации об ошибке требуется вызвать функцию GetLastError.
И в принципе такой подход не плох, но меня беспокоит глобальность данной функции. Для упрощения обработки ошибок я создал класс Читать полностью »
Разбираемся с библиотекой libnl для управления трафиком в Linux
2025-01-29 в 7:16, admin, рубрики: c++, linux, tc, traffic shapingВ статье рассмотрим как реализовать команды утилиты traffic control с помощью библиотеки libnl на с/c++. У libnl есть неплохая документация так же есть небольшое количество тестов. Которые помогают разобраться как работать с библиотекой.
Traffic control — утилита которая нужна для управления входящем и исходящим трафиком. С помощью tc возможно реализовывать политики QoS (Quality of Service), а именно выполнять SHAPING (выравнивание), SCHEDULING (приоритизация), POLICING (ограничение) и DROPPING (отбрасывание) трафика.
Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки
2025-01-28 в 13:01, admin, рубрики: C, c++, cmake, make, makefile, ruvds_статьи, сборка из исходников, сборка программ, сборка проекта![Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки - 1 Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки - 1](https://www.pvsm.ru/images/2025/01/29/sborka-proektov-si-i-si-ot-prostogo-k-slojnomu-chast-I-biblioteki.png)
Каждый раз, в течение многих лет, собирая пилотную версию мизерного проекта или простой утилиты, мне кажется, что уж в этот раз точно обойдусь обычным скриптом для сборки, и никакие сборщики проекта мне не понадобятся. Но суровая реальность приводит меня в чувство уже в течение первых нескольких минут работы. Сначала оказывается, что до невозможности простая программка нуждается в JSON-парсере, HTTP-запросах CURL и прочих библиотеках. А по мере возбуждения хотелок эти все зависимости нарастают как снежный ком. И все мечты быстро скомпилировать страничку кода встречают на каждом шаге всё новые и новые проблемы.
Вот сегодня и расскажу о том, какие бывают способы борьбы с зависимостями и сборки проекта из множества файлов на Си++. Заодно те, кто не любят Си++, смогут порадоваться «прелестям» этого процесса. И хоть тема очень важная для программистов, но я обратил внимание, что даже многолетний опыт не гарантирует понимания этих процессов. Но сразу предупреждаю — история длинная даже с учетом всех попыток не убегать на смежные темы.Читать полностью »
Путеводитель C++ программиста по неопределённому поведению
2025-01-28 в 10:58, admin, рубрики: C, c++, undefined behavior, баги, Компиляторы, неопределённое поведение, ошибки в коде, ошибки программистов, Программирование, СиВашему вниманию предлагается полный список разделов электронной книги (12 из 11 :)), посвящённой неопределённому поведению. Книга не является учебным пособием и рассчитана на тех, кто уже хорошо знаком с программированием на C++. Это своего рода путеводитель C++ программиста по неопределённому поведению, причём по самым его тайным и экзотическим местам. Автор книги — Дмитрий Свиридкин, редактор — Андрей Карпов.
Пишем легаси с нуля на С++, не вызывая подозрение у санитаров. 04 — Компиляторная археология
2025-01-24 в 8:38, admin, рубрики: c++Приветствую, читатели!
Я сейчас добавляю возможность вывода изображений с помощью GDI и XLib. Но до конца код не готов. Но решил пока кода мало попробовать его собрать на нескольких старых компиляторах 30-ти летней давности. И только такой путь может дать нормальный бинарник работающий на системах Windows 98, 95.
Для загрузки графики использую stb_image. В итоге получилось так. Правда в оригинале цвет должен быть красным, а не синим. Но пока вывод изображений не закончен.
Основная репа RetroFan.
Картинка выводится с масштабированием GDI.