Кроссплатформенная разработка на C++ без стандартных библиотек

Статья посвящена созданию минималистичных, кроссплатформенных программ на C++, ориентированных на совместимость с разными, в том числе и устаревшими операционными системами. Автор отказывается от стандартных библиотек, реализуя собственные аналоги базовых функций, таких как вывод на консоль, управление динамической памятью (malloc, free) и даже базовые строки. Это позволяет достичь независимости от конкретных версий компиляторов и библиотек, делая код более переносимым.
Кроссплатформенная разработка на C++ без стандартных библиотек
Изображение носит иллюстративный характер

В статье подробно описан процесс создания простейшей программы "hello world", которая работает на Windows и Linux. Для Windows автор использует MSVC 2022 и отключает стандартные библиотеки через флаг /NODEFAULTLIB. Аналогичные действия выполняются для Linux, используя GCC 13.0. Подход заключается в использовании только системных вызовов и реализации базового функционала своими руками, включая функции вывода на консоль и управления динамической памятью через HeapAlloc и HeapFree в Windows.

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

Идеологически проект направлен на изучение основ программирования, работы с низкоуровневыми функциями и архитектурой старых систем. В дальнейшем автор планирует добавить поддержку графики, при этом код должен оставаться кроссплатформенным. Использование C++ в данном случае обусловлено удобством применения ООП и шаблонов, несмотря на то, что на C можно было бы реализовать некоторые вещи проще.


Новое на сайте

19164Уязвимые обучающие приложения открывают доступ к облакам Fortune 500 для криптомайнинга 19163Почему ботнет SSHStalker успешно атакует Linux уязвимостями десятилетней давности? 19162Microsoft устранила шесть уязвимостей нулевого дня и анонсировала радикальные изменения в... 19161Эскалация цифровой угрозы: как IT-специалисты КНДР используют реальные личности для... 19160Скрытые потребности клиентов и преимущество наблюдения над опросами 19159Академическое фиаско Дороти Паркер в Лос-Анджелесе 19158Китайский шпионский фреймворк DKnife захватывает роутеры с 2019 года 19157Каким образом корейские детские хоры 1950-х годов превратили геополитику в музыку и... 19156Научная революция цвета в женской моде викторианской эпохи 19155Как новый сканер Microsoft обнаруживает «спящих агентов» в открытых моделях ИИ? 19154Как новая кампания DEADVAX использует файлы VHD для скрытой доставки трояна AsyncRAT? 19153Как новые китайские киберкампании взламывают госструктуры Юго-Восточной Азии? 19152Культ священного манго и закат эпохи хунвейбинов в маоистском Китае 19151Готовы ли вы к эре коэффициента адаптивности, когда IQ и EQ больше не гарантируют успех? 19150Иранская группировка RedKitten применяет сгенерированный нейросетями код для кибершпионажа
Ссылка