ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

Библиотека C/C++ разработчика

Библиотека C/C++ разработчика

الذهاب إلى القناة على Telegram

Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter

إظهار المزيد
7 192
المشتركون
لا توجد بيانات24 ساعات
-107 أيام
-3030 أيام
أرشيف المشاركات
FFI: как создать мост между Rust и C/C++ Сегодня мы рассмотрим, как создать безопасные FFI-интерфейсы в Rust для интеграции с
FFI: как создать мост между Rust и C/C++ Сегодня мы рассмотрим, как создать безопасные FFI-интерфейсы в Rust для интеграции с C/C++ библиотеками Если говорить проще, FFI (foreign function interface — интерфейс вызова внешних функций) – это способ «позаимствовать» функциональность из другого языка. В контексте нашей статьи, с одной стороны у нас Rust, где каждый байт памяти охраняется компилятором, а на другой C++, где свобода обращения с памятью может обернуться утечками или, что еще хуже, непредсказуемым UB (англ. undefined behavior, в ряде источников неопределенное поведение). И наша задача – сделать так, чтобы эти два мира не конфликтовали, а работали в унисон. https://habr.com/ru/companies/mvideo/articles/892926/ #cpp #programming 👉 @cpp_lib

📚 Мини-справочник по основным типам данных C++ Делимся компактным справочником по основным типам данных в C++. Сохраняйте себе на будущее. 🔢 Целочисленные типы • int — 4 байта, от -2,147,483,648 до 2,147,483,647 • short — 2 байта, от -32,768 до 32,767 • long — 4 байта (Windows) или 8 байт (Unix) • long long — 8 байт, от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 Модификаторы: • unsigned — только положительные числа, удваивает верхний предел • signed — со знаком (по умолчанию)

unsigned int counter = 100;
short temperature = -15;
long long population = 7800000000;
🔡 Символьные типы • char — 1 байт, обычные символы ASCII • wchar_t — 2 или 4 байта, широкие символы (Unicode) • char16_t — 2 байта, символы UTF-16 (C++11) • char32_t — 4 байта, символы UTF-32 (C++11)

char letter = 'A';
wchar_t unicodeChar = L'Ф';
char16_t utf16Char = u'Ж';
🔄 Числа с плавающей точкой • float — 4 байта, точность ~7 цифр, диапазон ±3.4e±38 • double — 8 байт, точность ~15 цифр, диапазон ±1.7e±308 • long double — 8-16 байт, точность ≥ double, диапазон зависит от компилятора

float price = 19.99f;   // 'f' суффикс для float
double pi = 3.14159265359;
long double precise = 1.23456789123456789L;  // 'L' суффикс
🧮 Логический тип • bool — 1 байт, значения: true или false

bool isActive = true;
bool hasPermission = false;
🗄 Производные типы • Массивы: int numbers[5]; • Указатели: int* ptr; • Ссылки: int& ref = value; • Строки: • C-строки: char str[] = "Hello"; • std::string: std::string text = "Hello"; 🔄 Автоматическое определение типа (C++11)

auto x = 10;        // int
auto y = 3.14;      // double
auto z = "Hello";   // const char*
🧩 Тип Void • void — отсутствие типа (для функций без возвращаемого значения) • void* — указатель на данные любого типа 🔍 Как узнать размер типа

cout << "Размер int: " << sizeof(int) << " байт" << endl;
💡 Полезные советы 1. Используйте **size_t для индексации и размеров 2. Для целых чисел с гарантированным размером используйте типы из <cstdint>: int32_t, uint64_t 3. Для денежных расчетов избегайте float из-за погрешностей округления #cpp #programming 👉 @cpp_lib

⚡️Готовы повысить квалификацию и стать востребованным профи в C++? Курс «C++ Developer. Professional» — идеальный выбор для р
⚡️Готовы повысить квалификацию и стать востребованным профи в C++? Курс «C++ Developer. Professional» — идеальный выбор для разработчиков, которые уже знакомы с языком и хотят выйти на новый уровень. Вы освоите принципы многопоточного программирования, работу с новыми стандартами C++ 20 и 23, а также научитесь эффективно взаимодействовать с сетью и обрабатывать большие объемы данных. Интересные кейсы и 14 практических работ помогут закрепить знания и подготовиться к реальным задачам. С обучением от OTUS вы получите глубокое понимание C++, научитесь проектировать масштабируемые решения и писать чистый, эффективный код. После завершения курса у вас будет прочная база для роста и карьерного продвижения в крупнейших IT-компаниях. 👉Пройдите вступительное тестирование и получите скидку на обучение: https://vk.cc/cM8B48 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Визуализация быстрой сортировки с SFML и C++20 В этой статье мы создадим интерактивную визуализацию алгоритма быстрой сортиро
Визуализация быстрой сортировки с SFML и C++20 В этой статье мы создадим интерактивную визуализацию алгоритма быстрой сортировки (QuickSort) с использованием библиотеки SFML и современных возможностей C++20. Этот проект поможет вам лучше понять, как работает один из самых популярных алгоритмов сортировки, и покажет, как можно комбинировать графику и алгоритмы для создания образовательных инструментов. https://habr.com/ru/articles/889188/ #cpp #programming 👉 @cpp_lib

C++26: constexpr и исключения В C++26 мы, наконец, сможем использовать throw в constexpr функциях! Предыстория В C++11 впервые появилась возможность помечать функции как constexpr, что позволяло выполнять их на этапе компиляции. Однако с самого начала были ограничения: такие функции не могли содержать try/catch и throw. Это было связано с тем, что исключения в constexpr контексте раньше просто не имели смысла: выполнение либо происходило на этапе компиляции, либо завершалось ошибкой компиляции. Со временем, с расширением возможностей constexpr, начали возникать ситуации, когда throw внутри constexpr функций стал бы полезен. Особенно это касалось шаблонного кода и библиотек общего назначения, где отказ от throw усложнял реализацию. Что изменилось в C++26 C++26 снимает запрет на throw в constexpr функциях. Теперь можно: * использовать throw в constexpr функциях; * обрабатывать исключения с помощью try/catch (при выполнении во время выполнения, а не компиляции); * компилятор по-прежнему выдаёт ошибку, если throw вызывается при вычислении на этапе компиляции. Пример

constexpr int might_throw(bool should_throw) {
    if (should_throw) {
        throw std::runtime_error("Oops");
    }
    return 42;
}
Теперь это разрешено! Но:

constexpr int x = might_throw(true); // Ошибка компиляции
constexpr int y = might_throw(false); // Ок, y == 42
А вот во время выполнения:

int main() {
    try {
        std::cout << might_throw(true); // Бросает исключение
    } catch (const std::exception& e) {
        std::cout << e.what(); // "Oops"
    }
}
Зачем это нужно? Это изменение делает constexpr функции более универсальными и приближает их к обычным функциям. Оно открывает путь к более выразительному коду, где одни и те же функции могут использоваться и на этапе компиляции, и во время выполнения без необходимости создавать дублирующие версии. Кроме того, это упрощает написание универсальных библиотек и работу с шаблонным кодом, где невозможно заранее предсказать, будет ли функция использоваться во время компиляции или выполнения. https://www.sandordargo.com/blog/2025/05/07/cpp26-constexpr-exceptions #cpp #programming 👉 @cpp_lib

Любителям x86-64 assembler посвящается: DIY волокна в C++ Нас ждёт мозговыносящая смесь 64/32-битного ассемблера и старого-до
Любителям x86-64 assembler посвящается: DIY волокна в C++ Нас ждёт мозговыносящая смесь 64/32-битного ассемблера и старого-доброго C++. Мы сделаем собственную реализацию... Волокон (fibers) без вызова Win API и звонков в службу спасения. https://habr.com/ru/articles/908406/ 👉 @cpp_lib

Как я написал эмулятор Nintendo Gameboy на C++ за две недели Расскажу, как устроена архитектура консоли Nintendo Gameboy, как
Как я написал эмулятор Nintendo Gameboy на C++ за две недели Расскажу, как устроена архитектура консоли Nintendo Gameboy, как можно эмулировать её основные компоненты, какие решения я принимал в процессе разработки и какие инструменты использовал. В свободное время, (прим., во время отпуска) я бывает берусь за какие-нибудь небольшие проекты не связанные с моей основной деятельностью. В этот раз решил создать эмулятор консоли. Вопреки моде на Rust, взял проверенный годами C++. Эмуляция — непростая задача. Производители редко публикуют полные спецификации аппаратной части, поэтому сообщество занимается восстановлением поведения системы по косвенным признакам и тестированию. Полное решение таких задач требует больше времени, чем пара недель отпуска. В условиях жестких временных рамок, желания получить быстрый результат я остановился на эмуляции Nintento Gameboy. Активное сообщество, популярность и долгая жизнь консоли привели к появлению огромного количества открытых ресурсов, которые делают возможным получить быстрый и наглядный результат. Например, на archive.org доступно руководство разработчика (GameBoyProgManVer1.1), а поиск по Github даёт более 8000 репозиториев, так или иначе связанных с данной консолью. https://habr.com/ru/articles/908752/ #cpp #programming 👉 @cpp_lib

⁉️ Хотите научиться разрабатывать веб-сервисы на Rust? 📅 19 мая в 20:00 МСК на открытом вебинаре мы покажем, как создать мощ
⁉️ Хотите научиться разрабатывать веб-сервисы на Rust? 📅 19 мая в 20:00 МСК на открытом вебинаре мы покажем, как создать мощный и эффективный веб-сервис с использованием HTTP и gRPC API на Rust. Что вас ждёт: — Разбор бизнес-логики веб-сервиса. — Реализация HTTP и gRPC API. — Разработка клиентского приложения и тестов для сервиса. 🎁 Открытый урок проходит в преддверие старта курса «Rust Developer. Professional». Все участники получат скидку на обучение. ➡️ Запишитесь прямо сейчас, чтобы не пропустить: https://vk.cc/cLTcXQ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

DevSecOps for C++? Keep Calm and use Conan Luis Caro Campos - CppCon 2024 How Conan can help secure your software supply chain источник #cpp #programming 👉 @cpp_lib

Как Мэтт Годболт «продал» мне Rust (рассказав о C++) Мэтт Годболт, знаменитый разработчик Compiler Explorer — потрясающий чел
Как Мэтт Годболт «продал» мне Rust (рассказав о C++) Мэтт Годболт, знаменитый разработчик Compiler Explorer — потрясающий человек, вам стоит найти в вебе и изучить весь созданный им контент. Именно этим и занимался, просматривая Correct by Construction: APIs That Are Easy to Use and Hard to Misuse. Я уже больше двадцати лет работаю с C/C++, поэтому эта тема была мне близка. Когда я смотрел его доклад, ко мне постоянно приходила мысль: «Да! И именно поэтому в Rust это делается так». После просмотра видео я подумал, что этот доклад — отличный способ понять, как Rust помогает разработчикам не только в безопасности по памяти, и в своей статье я расскажу об этом. Но прежде нам следует поговорить о поднятых Мэттом проблемах и о том, как он предлагает решать их в C++. Сделайте себе одолжение и посмотрите доклад целиком, а я разберу один из его пунктов. https://habr.com/ru/articles/908032/ original https://www.collabora.com/news-and-blog/blog/2025/05/06/matt-godbolt-sold-me-on-rust-by-showing-me-c-plus-plus/ #cpp #programming 👉 @cpp_lib

🚀 Подборка Telegram каналов для программистов Системное администрирование, DevOps 📌 https://t.me/bash_srv Bash Советы https://t.me/win_sysadmin Системный Администратор Windows https://t.me/sysadmin_girl Девочка Сисадмин https://t.me/srv_admin_linux Админские угодья https://t.me/linux_srv Типичный Сисадмин https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin https://t.me/linux_odmin Linux: Системный администратор https://t.me/devops_star DevOps Star (Звезда Девопса) https://t.me/i_linux Системный администратор https://t.me/linuxchmod Linux https://t.me/sys_adminos Системный Администратор https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало) https://t.me/sysadminof Книги для админов, полезные материалы https://t.me/i_odmin Все для системного администратора https://t.me/i_odmin_book Библиотека Системного Администратора https://t.me/i_odmin_chat Чат системных администраторов https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др. https://t.me/sysadminoff Новости Линукс Linux 1C разработка 📌 https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С https://t.me/DevLab1C 1С:Предприятие 8 https://t.me/razrab_1C 1C Разработчик https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт https://t.me/rabota1C_rus Вакансии для программистов 1С Программирование C++📌 https://t.me/cpp_lib Библиотека C/C++ разработчика https://t.me/cpp_knigi Книги для программистов C/C++ https://t.me/cpp_geek Учим C/C++ на примерах Программирование Python 📌 https://t.me/pythonofff Python академия. https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском https://t.me/python_360 Книги по Python Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика https://t.me/java_360 Книги по Java Rus https://t.me/java_geek Учим Java на примерах GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка https://t.me/kotlin_lib Подборки полезного материала по Kotlin Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков https://t.me/frontend_sovet Frontend советы, примеры и практика! https://t.me/React_lib Подборки по React js и все что с ним связано Разработка игр 📌 https://t.me/game_devv Все о разработке игр Библиотеки 📌 https://t.me/book_for_dev Книги для программистов Rus https://t.me/programmist_of Книги по программированию https://t.me/proglb Библиотека программиста https://t.me/bfbook Книги для программистов БигДата, машинное обучение 📌 https://t.me/bigdata_1 Big Data, Machine Learning Программирование 📌 https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций https://t.me/rust_lib Полезный контент по программированию на Rust https://t.me/golang_lib Библиотека Go (Golang) разработчика https://t.me/itmozg Программисты, дизайнеры, новости из мира IT https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 https://t.me/nodejs_lib Подборки по Node js и все что с ним связано https://t.me/ruby_lib Библиотека Ruby программиста https://t.me/lifeproger Жизнь программиста. Авторский канал. QA, тестирование 📌 https://t.me/testlab_qa Библиотека тестировщика Шутки программистов 📌 https://t.me/itumor Шутки программистов Защита, взлом, безопасность 📌 https://t.me/thehaking Канал о кибербезопасности https://t.me/xakep_2 Хакер Free Книги, статьи для дизайнеров 📌 https://t.me/ux_web Статьи, книги для дизайнеров Математика 📌 https://t.me/Pomatematike Канал по математике https://t.me/phis_mat Обучающие видео, книги по Физике и Математике https://t.me/matgeoru Математика | Геометрия | Логика Excel лайфхак📌 https://t.me/Excel_lifehack https://t.me/mir_teh Мир технологий (Technology World) Вакансии 📌 https://t.me/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT

Генерация лабиринтов: алгоритм Эллера Сегодня я хотел бы рассказать о генерации идеального лабиринта — алгоритмом Эллера. Статья подойдёт всем любителям алгоритмов» https://habr.com/ru/articles/667576/ #cpp #programming 👉 @cpp_lib

ggwave — это компактная и переносимая библиотека C/C++ для передачи и приема коротких сообщений с использованием звуковых волн. Она позволяет устройствам обмениваться данными через звук — без необходимости в Bluetooth, Wi-Fi или других беспроводных технологиях. Это особенно полезно для коротких одноразовых взаимодействий между устройствами, которые находятся рядом друг с другом. Поддерживает: * Передачу текста через звук * Возможность генерации и анализа аудиосигналов в реальном времени * Кроссплатформенность: работает на Windows, macOS, Linux, iOS, Android и в браузере (через WebAssembly) Примеры использования: * Аутентификация устройств поблизости * Обмен контактами или ссылками * Синхронизация устройств без интернета https://github.com/ggerganov/ggwave #cpp #programming 👉 @cpp_lib

Переходим на C++26: как собрать и настроить GCC 15.1 в Ubuntu На днях вышел GCC 15.1.0 с поддержкой некоторых фич C++26. Одна
Переходим на C++26: как собрать и настроить GCC 15.1 в Ubuntu На днях вышел GCC 15.1.0 с поддержкой некоторых фич C++26. Однако нынешняя версия Ubuntu все еще использует старый GCC 13. Здесь мы и рассмотрим, как вручную установить GCC 15.1 на Ubuntu и начать использовать новейшие элементы C++26 уже сегодня. https://habr.com/ru/articles/905528/ #cpp #programming 👉 @cpp_lib

Этот проект содержит исходный код игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert, выпущенных как часть сборника Command & Conquer Remastered Collection. Код распространяется под лицензией GPL v3 и предоставляет возможность энтузиастам и разработчикам модифицировать, изучать и использовать движок в рамках условий лицензии. В проекте используется C++ и множество современных практик разработки, а также система сборки CMake. Репозиторий включает: * Исходный код движка на C++ * Документацию по сборке * Скрипты для интеграции с игрой * Исторический контекст разработки Проект ориентирован на обучение, поддержку моддинга и развитие сообщества вокруг классических RTS-игр. https://github.com/electronicarts/CnC_Remastered_Collection #cpp #programming 👉 @cpp_lib

🔐 Как сделать код на Rust надёжнее и безопаснее? 📅 14 мая в 20:00 МСК мы разберём ключевые аспекты работы с контрактами и и
🔐 Как сделать код на Rust надёжнее и безопаснее? 📅 14 мая в 20:00 МСК мы разберём ключевые аспекты работы с контрактами и инвариантами в Rust на открытом вебинаре. ❗️Что вас ждёт: — Разберём понятие инварианта и как он работает в Rust. — Обсудим инвариант безопасности и его роль в написании надежного кода. — Узнаем, как создавать удобные и безопасные контракты для API. 🦀 Вы освоите использование системы типов Rust для создания надёжных решений и узнаете, как компилятор и система типов помогают писать безопасный и эффективный код. ➡️ Регистрируйтесь и получите скидку на программу обучения «Rust Developer. Professional»: https://vk.cc/cLCkz3 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

#cpp #programming 👉 @cpp_lib
#cpp #programming 👉 @cpp_lib

Пишем на С++ вектор, умеющий расширяться без копирования элементов В языке С есть функции malloc, free и realloc. При использ
Пишем на С++ вектор, умеющий расширяться без копирования элементов В языке С есть функции malloc, free и realloc. При использовании последней вы можете написать этакий расширяющийся массив из примитивных типов или структур (классов-то нет), который, можно надеяться, не будет копировать все данные при каждом расширении. В С++ есть встроенный класс vector, который представляет из себя расширяющийся массив, но он так не умеет: при каждом расширении вектора выделяется новый участок памяти и все элементы перемещаются на него (по возможности, с использованием move-семантики). Но ведь, если можно каждый раз не копировать все старые элементы на новое место, вектор должен работать быстрее? В этой статье я попробую написать вектор, который умеет расширяться без копирования элементов. Сначала я покажу, что стандартный вектор не умеет расширяться без копирования/перемещения, потом обсужу придуманное решение, потом собственно приведу реализацию вектора, а в конце сравню производительность со стандартным вектором. https://habr.com/ru/post/701784/ #cpp #programming 👉 @cpp_lib

📕 Тест по навыкам работы со схемотехникой и С/С++ для разработчиков, инженеров-схемотехников и энтузиастов 📕 Ответьте на 12
📕 Тест по навыкам работы со схемотехникой и С/С++ для разработчиков, инженеров-схемотехников и энтузиастов 📕 Ответьте на 12 вопросов и проверьте, насколько вы разбираетесь в базовых принципах работы со схемотехникой, понимаете особенности работы с микроконтроллерами и на сколько готовы к обучению на курсе — «Embedded Developer». За 4 месяца курса вы: - Научитесь писать код для управления различными модулями, такими как таймеры, прерывания, АЦП/ЦАП - Освоите использование различных протоколов взаимодействия (I2C, SPI, UART, WiFi и BLE) для интеграции микроконтроллеров в сложные системы - Сможете создавать надежные и эффективные электронные устройства, используя современные инструменты и технологии Время прохождения теста ограниченно 60 минут 👉 ПРОЙТИ ТЕСТ — https://vk.cc/cLkoYG 💣 Пройдите тест, получите скидку на курс, и записи уроков от преподавателей курса в подарок. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Сборка C++ проектов. Raylib. Дополнительные темы CMAKE. Game Engine серии 0:00:00 - Введение 0:00:51 - Raylib, SDL, SFML 0:03:20 - Подключаем, тестируем raylib 0:14:22 - Вложенные CMakeLists 0:33:15 - Макросы в CMake 0:36:35 - Raylib + ChuckNorrisJokes 0:45:49 - Собираем все проекты источник #cpp #programming 👉 @cpp_lib