Библиотека C/C++ разработчика
6.81K subscribers
655 photos
690 videos
8 files
940 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Media is too big
VIEW IN TELEGRAM
Безопасное копирование, перемещение и уничтожение объектов в современном C++ по правилу «все или ничего»

Какие конструкторы нужны классу C++? Какие он генерирует сам? Как насчет различных операторов присваивания? А деструктор? Как не отстрелить себе ногу и без труда ориентироваться в этих водах?

Это и многое другое мы рассмотрим в этом видео, которое расскажет нам о простом правиле, которому нужно следовать при реализации классов в современном C++, - правиле "все или ничего". Мы погрузимся в причины его существования и посмотрим, как оно облегчает нам жизнь.

источник

#cpp #programming

👉 @cpp_lib
👍3🤷‍♂1
Как malloc сломала JPGLoader в Serenity, или Как выиграть в лотерее

Пару лет назад мне выпала возможность расследовать в SerenityOS интересный баг, связанный с декодированием изображений JPG, которые по какой-то причине при просмотре выглядели так, как вы видите выше.

Странно, не так ли? Похоже, будто просто перепутали RGB и BGR. При этом внесение в JPGLoader.cpp следующего изменения:

- const Color color { (u8)block.y[pixel_index], (u8)block.cb[pixel_index], (u8)block.cr[pixel_index] };
+ const Color color { (u8)block.cr[pixel_index], (u8)block.cb[pixel_index], (u8)block.y[pixel_index] };
context.bitmap->set_pixel(x, y, color);


https://habr.com/ru/companies/ruvds/articles/828224/

original https://sin-ack.github.io/posts/jpg-loader-bork/

#cpp #programming

👉 @cpp_lib
🔥7👍1
Структуры и классы в C++ и D

Реализации объектно-ориентированного программирования в разных Си-подобных языках, конечно, похожи, и все такие языки, созданные после C++, пытаются сделать ООП более удобно используемым. Сравним в этой статье ООП в D и С++.

Структуры и классы в C++ — это фактически одно и то же (хотя на практике используются по-разному), но в D есть явная семантическая разница. Структуры в D в основном предназначены для простой инкапсуляции данных и функций в единой сущности. Наследовать структуры нельзя, а память под структуры чаще всего выделяется на стеке. Классы же можно наследовать друг от друга, а объекты классов выделяются (почти всегда) в куче, контролируемой сборщиком мусора.

https://habr.com/ru/articles/827240/

#cpp #programming

👉 @cpp_lib
👍3
📕C++20 Get the Details
Grimm Rainer (2022)

В этой книге подробно рассказывается о новом стандарте С++20. Для тех, кто не знаком с С++20, приводится краткий обзор, далее рассматриваются ключевые возможности языка. Вы получите представление о ключевых изменениях в ядре языка (концепты и модули), новой библиотеке диапазонов, корутинах, а затем сможете применить теорию на практике, изучив ряд примеров. Книгу можно использовать как справочное руководство и изучать главы в удобном для вас порядке.
Издание будет полезно разработчикам, желающим освоить последнюю версию С++, изучить передовые возможности и добавления в язык, а также заглянуть за кулисы разработки новых стандартов языка и узнать, как предлагаются, обсуждаются и утверждаются новые изменения в стандарт С++ и чем вызваны эти изменения.

#cpp #programming

👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2
Разработка интерфейса для Windows — это боль

Последние несколько дней я пытался найти библиотеку, которая бы позволила мне писать на C++ программы с GUI. Мои требования были довольно просты:

Достаточно только поддержки Windows;

Разрешено коммерческое использование;

Простая стилизация, в том числе и тёмный режим;

Результатом должен быть единый файл .exe размером меньше 40 МБ без или с минимальным количеством зависимостей;

Написание части программы с GUI не должно занимать больше времени, чем сама функциональность.

https://tulach.cc/writing-gui-apps-for-windows-is-painful/

#cpp #programming

👉 @cpp_lib
72👍1🔥1🤔1🤷1
Media is too big
VIEW IN TELEGRAM
Плывущий экран. Вирус на C++. Melting Screen

Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование!
В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть.

источник

#cpp #programming

👉 @cpp_lib
👍9🔥1
Как выстрелить себе в ногу в C и C++. Сборник рецептов Haiku OS

История встречи статического анализатора PVS-Studio с кодом операционной системы Haiku уходит в далёкий 2015-й год. Это был интереснейший эксперимент и полезный опыт для команд обоих проектов. Почему эксперимент? Анализатора для Linux тогда не было и не будет ещё полтора года. Но труды энтузиастов нашей команды были вознаграждены: мы познакомились с разработчиками Haiku и повысили качество кода, пополнили базу редкими ошибками программистов и доработали анализатор. Сейчас проверить код Haiku на наличие ошибок можно легко и быстро.

https://habr.com/ru/companies/pvs-studio/articles/461255/

#cpp #programming

👉 @cpp_lib
👍1
Основы программирования на С/C++

Что такое IDE?
Почему стоит изучать С++?
Работа в Visual Studio C++ #1
Первая программа на С++
#5 Escape последовательности и Raw-строки в C++
Основные понятия языка С++
Представление чисел в памяти компьютера
Переменные и типы данных в С++
Локальные и глобальные переменные
Литералы
Потоковый ввод вывод в С++
.
.
.
Стек вызовов
Перегрузка и шаблоны функций в С++
Хвостовой возвращаемый тип в С++
Параметры по умолчанию в функции С/С++
Рекурсивные алгоритмы на языке С++
Указатель на функцию в языке С++
Динамическая память в языке С
Динамическая память в языке C++
Пример задачи на работу с динамической памятью в С++
Двумерный динамический массивна Еськова. Основы программирования

Доступно 56 видео

#cpp #programming

👉 @cpp_lib
👍81
This media is not supported in your browser
VIEW IN TELEGRAM
Как написать 2D игру на C++ и чистом STL для терминала в Linux

Привет, Хабр, я PHP разработчик с опытом работы в продакшне более 8 лет. После долгого и упорного труда мне стало скучно пилить микросервисы и бэкенды в хайлоде, я решил постичь магию разработки игр. Выбрал курс по Unreal Engine 5 и C++, так как там все структурировано, понятно, и в случае необходимости есть кому задать вопрос. На первой лекции по основам С++ преподаватель сразу предложил челлендж - написать 2D игру без использования игрового движка. Идея мне понравилась и я сразу приступил к реализации.

https://habr.com/ru/post/708486/

#cpp #programming

👉 @cpp_lib
🔥82👍1
Прошиваем программу не только в начало FLASH памяти STM32

Знаете ли вы куда попадает ваша программа после того, как вы нажали кнопку RUN или DEBUG в IDE? Если да, то как изменить этот адрес или даже выйти за пределы постоянной памяти и прожигаться сразу в оперативную память.

Я работаю в CubeIDE и весь мой интерфейс будет именно из этой среды разработки.

Начнем с ответа на первый вопрос, если использовать стандартные настройки IDE и взять стандартный ST-LINK (не важно оригинал или свисток), то при прожигании микроконтроллера будет очищено нужное количество секторов во FLASH памяти и на их место будет записана программа, причем в самое начало FLASH памяти по адресу 0x08000000.

Тут немного остановимся. Для большинства проектов этого достаточно, программа находится во FLASH памяти, при перезагрузке микроконтроллера ни куда не исчезает и исправно запускается. Проблемы начинаются, когда приходит задача, встроить загрузчик, который будет самостоятельно принимать прошивку по одному из интерфейсов, будь то UART/USART, I2C или CAN и сохранять ее в требуемом месте FLASH памяти, а после перезагрузки должен самостоятельно подготовить и передать управление требуемой программе.

https://habr.com/ru/articles/831016/

#cpp #programming

👉 @cpp_lib
👍8