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

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

Ir al canal en Telegram

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

Mostrar más
7 322
Suscriptores
+524 horas
+67 días
+1230 días
Archivo de publicaciones
C++ изнутри: внутренние механизмы классов Крис Райан — CppCon 2024 В своём докладе я рассмотрю внутренние механизмы C++ по следующим темам: - "Луковица C++": как она соотносится с конструированием, уничтожением объектов и полиморфизмом; - Порядок конструирования и уничтожения объектов, а также обработка до и после выполнения main(); - Указатели на функции-члены (это не те C-указатели на функции, что вы знали раньше); - Указатели на данные-члены (не просто «сырые» указатели) и их "data-morphic" функциональность; - Понимание стека вызовов, кадров стека и механизмов базового указателя (base pointer). источник #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

Dockerизированная toolchain в CLion с Conan При разработке на C++ часто возникает необходимость воспроизводимой среды для сборки. Особенно если проект разрабатывается командой, где у каждого разработчика разные операционные системы и окружения. Тут на помощь приходит Docker. Зачем это нужно? - Единая среда для всех участников команды - Изоляция от локальной системы - Упрощение CI/CD Интеграция с CLion CLion поддерживает удалённые toolchain, включая Docker-контейнеры. То есть вы можете настроить сборку и отладку прямо в IDE, используя контейнер как основную среду. Conan + Docker Conan используется для управления зависимостями. Вместе с Docker это даёт: - Контролируемую установку зависимостей - Воспроизводимость билдов - Возможность легко переключаться между разными окружениями Краткие шаги настройки: 1. Создайте Docker-образ с нужными компиляторами и инструментами. 2. Настройте Toolchains в CLion, указав Docker как удалённую среду. 3. Подключите Conan для управления зависимостями. 4. Собирайте и отлаживайте проект прямо в контейнере. Такой подход особенно полезен для кросс-платформенной разработки и больших командных проектов, где важна стабильность окружения. https://schneide.blog/2025/06/23/dockerized-toolchain-in-clion-with-conan/ #cpp #programming 👉 @cpp_lib

Яндекс проведет C++ Zero Cost Conf — конференцию для C++ разработчиков Когда: 2 августа Место проведения: Москва, Белград, Санкт-Петербург. Мероприятие для всех, кто работает с прикладным C++ и хочет быть в курсе реальных кейсов, подкрепленных метриками. Антон Полухин, руководитель группы разработки общих компонентов в Техплатформе Городских сервисов Яндекса и автор книги Boost C++ Application Development Cookbook, разберет в Москве, как использовать C++20 модули в больших существующих проектах с поддержкой старых стандартов на примерах Boost, libstdc++ и libc++. Константин Владимиров и Владислав Белов, специалисты из Syntacore, обсудят строгий алиасинг, restrict, оптимизации, которые от них зависят, и неожиданные нюансы поведения. А еще — разберут, как это влияет на производительность, и в чём сложности поддержки в компиляторах и в стандарте C++. Ознакомиться со всеми спикерами и темами докладов можно тут. Во всех трёх городах пройдет код-гольф на C++, где нужно решать задачи по программированию, потратив минимальное количество символов на код, а также код-ревью — активность, где нужно искать и править ошибки в коде. В Москве для участников дополнительно проведут воркшоп по системе профилирования Perforator — расскажут про локальный запуск и поднятие своей инсталляции постоянного профилирования, а также покажут, как использовать консольную утилиту perforator record. Регистрация уже открыта.

Ошибки, которые не случились: C++ и compile‑time проверка SQL-запросов В этой статье мы посмотрим, как можно реализовать полн
Ошибки, которые не случились: C++ и compile‑time проверка SQL-запросов В этой статье мы посмотрим, как можно реализовать полную compile‑time валидацию SQL‑запросов на основе схемы базы данных, встраиваемой прямо в код. Без магии, без рантайма, без сторонних тулов. Только стандартный C++ и ваша структура БД. Валидация таблиц, столбцов, типов аргументов и их количества — всё на compile‑time. Представьте, если бы компилятор сам указывал «такой таблицы нет», «несуществующий столбец», «несовместимые типы» — до запуска программы. Такой подход полностью устраняет «сюрпризы» во время исполнения и исключает класс ошибок, связанных с генерацией SQL во время работы программы. Ваша программа даже не соберётся. https://habr.com/ru/articles/929052/ #cpp #programming 👉 @cpp_lib

+5
Эффективное использование С++ Лекция 1. Библиотеки, утилиты, средства разработки, сборка (Эффективное использование С++) Лекция 2. Работа с памятью. Утечки ресурсов. RAII, умные указатели (Эффективное использование С++) Лекция 3. Move semantics, rvalue reference, perfect forwarding. Лекция 4. Callbacks: lambda, bind & function. Лекция 5. Multithreading in C++ (потоки, блокировки, задачи, атомарные операции, очереди сообщений) Лекция 6. Обзор возможностей современных стандартов C++ источник #cpp #programming 👉 @cpp_lib

🦀 Хотите стать Middle Rust-разработчиком? Присоединяйтесь к открытому уроку «Техническое собеседование на Middle Rust разраб
🦀 Хотите стать Middle Rust-разработчиком? Присоединяйтесь к открытому уроку «Техническое собеседование на Middle Rust разработчика» 24 июля в 20:00 МСК. В режиме онлайн разберем: — Типичные вопросы, которые вам зададут на собеседовании. — Задачи, которые дают кандидатам на уровне Middle. — Частые ошибки на собеседованиях и способы их избежать. ❗️Этот урок — отличная подготовка к карьерному росту в разработке. 👉 Записаться на вебинар курса «Rust Developer. Professional»https://vk.cc/cNKKqz Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

+4
Курс по ООП в С++ введение инкапсуляция наследование полиморфизм шаблоны и метапрограммирование источник #cpp #programming 👉 @cpp_lib

Respect++ #cpp #programming 👉 @cpp_lib
+3
Respect++ #cpp #programming 👉 @cpp_lib

17 июля в 19:00 (Мск) приглашаем на онлайн-встречу,посвященную профессиональному развитию в сфере разработки электронных устройств. Наша Академия программирования электронных устройств занимается повышением квалификации инженеров-радиоэлектронщиков. На встрече обсудим: - Кто занимается разработкой электронных устройств сегодня - Самые востребованные направления в отрасли - Актуальные возможности для профессионального старта - Разные форматы работы в этой сфере Также у вас будет возможность: - Получить ответы на свои вопросы от эксперта - Познакомиться с программами дополнительного профессионального образования в этой сфере Регистрируйтесь прямо сейчас – количество мест ограничено! После регистрации Вам придет бонус - "Принципы работы радиоэлектронщиков" Ждем Вас!

Почему C++ считает мой класс копируемым, если его нельзя скопировать? Рассмотрим следующий сценарий: template struct Base { /
Почему C++ считает мой класс копируемым, если его нельзя скопировать? Рассмотрим следующий сценарий:

template<typename T>
struct Base
{
    // Есть конструктор по умолчанию
    Base() = default;

    // Не копируемый
    Base(Base const &) = delete;
};

template<typename T>
struct Derived : Base<T>
{
    Derived() = default;
    Derived(Derived const& d) : Base<T>(d) {}
};

// Это assertion выполняется?
static_assert(
    std::is_copy_constructible_v<Derived<int>>);
Почему выполняется это assertion? Очевидно, что скопировать Derived<int> нельзя, ведь при этом мы попытаемся скопировать некопируемый Base<int>. И в самом деле, если попробовать скопировать его, то мы получим ошибку:

void example(Derived<int>& d)
{
    Derived<int> d2(d);
    // msvc: error C2280: 'Base<T>::Base(const Base<T> &)':
    //       attempting to reference a deleted function
    // gcc:  error: use of deleted function 'Base<T>::Base(const Base<T>&)
    //       [with T = int]'
    // clang: error: call to deleted constructor of 'Base<int>'
}
Итак, компилятор считает, что Derived<int> копируемый, но когда мы пытаемся его скопировать, выясняется, что это не так! https://habr.com/ru/articles/920202/ #cpp #programming 👉 @cpp_lib

Запись System Level MeetUp. Поток C++ Мы встретились, чтобы поговорить об C++ в системной разработке: обсудить стандарты, подходы и реальные задачи, которые решаются на этом языке. 00:00 - Открытие мероприятия. 08:30 - Доклад "Девиртуализация в C++, компиляторах и вашей программе" (Константин Владимиров и Илья Андреев). 47:50 - Вопросы от участников. 01:00:32 - Доклад "Кодек для json'ов с фиксированной схемой" (Никита Пешаков). 01:27:33 - Вопросы от участников. 01:43:04 - Дискуссия "Как писать меньше на C++?" (Константин Владимиров, Илья Казаков, Алексей Щербаков, Василий Рамаданов). 02:43:06 - Доклад "Реализация динамического полиморфизма для свободных функций" (Кирилл Колодяжный). 03:00:56 - Вопросы участников. 03:11:00 - Доклад "Шаблонное мета-программирование в современном C++ для задач космической баллистики" (Леонид Меркин). 03:59:32 - Вопросы участников. 04:06:05 - Доклад "C++ внутри PostgreSQL: удобство против традиций" (Илья Шишков). 04:46:55 - Вопросы участников. источник #cpp #programming 👉 @cpp_lib

Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria) Сегодня — поворотный момент в истории C++: всего несколько
Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria) Сегодня — поворотный момент в истории C++: всего несколько минут назад комитет по стандартизации C++ проголосовал за включение первых семи документов по отражению во время компиляции (compile-time reflection) в черновик стандарта C++26 — под продолжительные аплодисменты в зале. Думаю, лучше всего значение этой функции выразила Хана «Мисс Констэкспр» Дусикова несколько дней назад, в своей привычной спокойной и невозмутимой манере... когда ей сказали, что документ по reflection попадёт на голосование в субботу, она слегка пожала плечами и тихо сказала: «Совершенно новый язык». https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meeting-sofia-bulgaria/ статья от 2025-06-21 #cpp #programming 👉 @cpp_lib

FastCGo: как мы ускорили вызов C-кода в Go в 16,5 раза Всем привет! Меня зовут Владимир Пустовалов, я C++ разработчик в коман
FastCGo: как мы ускорили вызов C-кода в Go в 16,5 раза Всем привет! Меня зовут Владимир Пустовалов, я C++ разработчик в команде Deckhouse компании «Флант». Мои коллеги — DevOps-инженеры — на данный момент обслуживают более 600 кластеров, и, естественно, в каждом из них развёрнута система мониторинга. Изначально мы использовали Prometheus — опенсорсную систему мониторинга, написанную на Go. По нашей статистике, она занимала около 20 % ресурсов каждого кластера. Мы не могли с этим мириться и поэтому разработали проект под названием Prom++, в котором многократно сократили потребление оперативной памяти и снизили нагрузку на центральный процессор. Кратко о том, что мы сделали: переписали на С++ ядро хранения и обработки горячих данных, при этом вся оркестрация и периферия остались в Prometheus на Go, что позволило сохранить полную совместимость с Prometheus. Для частых вызовов кода C++ мы использовали механизм CGo, однако первые тесты показали, что производительность CPU практически не улучшилась из-за медлительности CGo. В итоге мы переписали CGo, создав собственный механизм вызова. Что будет в этой статье: Разберём, что такое CGo и почему он медленный. Создадим простой собственный механизм CGo-вызова. Доведём этот механизм до полноценного решения. https://habr.com/ru/companies/flant/articles/923912/ #cpp #programming 👉 @cpp_lib

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

Сегментация памяти в программе на C/C++ #cpp #programming 👉 @cpp_lib

RAII 2.0: RAII как архитектурный инструмент в C++ Идиома RAII — давно зарекомендовал себя как удобный способ автоматического
RAII 2.0: RAII как архитектурный инструмент в C++ Идиома RAII — давно зарекомендовал себя как удобный способ автоматического управления ресурсами в C++. Обычно мы применяем его для управления памятью, файловыми дескрипторами или мьютексами. Однако что, если расширить понятие RAII до управления не только физическими ресурсами, но и логическими контрактами и состояниями системы? В этой статье я хочу поговорить о том, как RAII можно использовать для контроля жизненного цикла асинхронных операций, транзакций или подписок, гарантируя их корректное завершение или откат до прежнего состояния. https://habr.com/ru/articles/901092/ #cpp #programming 👉 @cpp_lib

Удобный способ работы с перечислениями в C++ — приведение enum к строке и обратно. Во многих проектах используется enum, чтобы задать ограниченный набор значений. Но как вывести значение enum в лог? Или, наоборот, прочитать из строки и получить нужное значение enum? C++ сам по себе не умеет конвертировать enum в строку и обратно. Вот простая реализация этого функционала через std::unordered_map:

enum class LogLevel {
    Debug,
    Info,
    Warning,
    Error
};

const std::unordered_map<LogLevel, std::string> LogLevelToString = {
    {LogLevel::Debug, "Debug"},
    {LogLevel::Info, "Info"},
    {LogLevel::Warning, "Warning"},
    {LogLevel::Error, "Error"},
};

const std::unordered_map<std::string, LogLevel> StringToLogLevel = {
    {"Debug", LogLevel::Debug},
    {"Info", LogLevel::Info},
    {"Warning", LogLevel::Warning},
    {"Error", LogLevel::Error},
};

std::string to_string(LogLevel level) {
    return LogLevelToString.at(level);
}

LogLevel to_log_level(const std::string& str) {
    return StringToLogLevel.at(str);
}
Такой подход хорошо работает, если enum не слишком большой. Если значений много — можно автоматизировать генерацию через макросы или использовать библиотеки вроде magic_enum. #cpp #programming 👉 @cpp_lib

Лаконичный макрос defer для C++17 Ручное управление ресурсами в низкоуровневом си-подобном коде на C++ — довольно хлопотное з
Лаконичный макрос defer для C++17 Ручное управление ресурсами в низкоуровневом си-подобном коде на C++ — довольно хлопотное занятие. Создание достойных RAII-врапперов для каждого используемого сишного API не всегда практично, а использование подходов с goto cleanup или множеством вложенных if (success) вредит читаемости кода. Макрос defer как никогда кстати! Отложенная лямбда будет выполнена при выходе из области видимости, независимо от того, будет ли выполнен return, брошено исключение, или даже выполнен goto наружу. Данный макрос по-настоящему zero-cost и не зависит от рантайма C или стандартной библиотеки, поэтому его можно использовать даже в разработке под ядро ОС. https://habr.com/ru/articles/916732/ #cpp #programming 👉 @cpp_lib