Библиотека C/C++ разработчика | cpp, boost, qt
20.4K subscribers
1.76K photos
46 videos
16 files
3.94K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
Чек-лист: Оптимизация времени компиляции

Долгая компиляция убивает продуктивность. Ускорьте сборку вашего C++ проекта.


🎯 Структура проекта

✓ Используйте forward declarations вместо #include где возможно
✓ Минимизируйте зависимости в header файлах
✓ Применяйте Pimpl idiom для скрытия деталей имплементации
✓ Разбивайте большие файлы на модули


🎯 Современные возможности

✓ Переходите на C++20 modules постепенно
✓ Используйте precompiled headers для стабильных зависимостей
✓ Настройте distributed compilation (distcc, Incredibuild)


🎯 Инструменты и настройки

✓ Включите параллельную компиляцию (-j флаг)
✓ Используйте ccache для кеширования результатов
✓ Профилируйте время компиляции с -ftime-trace (Clang)
✓ Настройте incremental linking


Как измерить результат: Замеряйте время полной и инкрементальной сборки регулярно.

Библиотека C/C++ разработчика #буст
6🔥4
🚀 C++17: structured bindings

Structured bindings в C++17 — это не просто красивый синтаксис, это читаемость кода на новом уровне!


// Старый способ (до C++17)
std::map<std::string, int> counts;
for (auto it = counts.begin(); it != counts.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}

// C++17 structured bindings
for (const auto& [key, value] : counts) {
std::cout << key << ": " << value << std::endl;
}

// Работает с парами, tuple, массивами
auto [x, y, z] = std::make_tuple(1, 2.5f, "hello");
auto [min, max] = std::minmax({5, 2, 8, 1, 9});



Код стал намного читаемее. Особенно полезно при работе с контейнерами пар и функциями, возвращающими несколько значений.


🧠 Используете ли вы structured bindings? В каких случаях они наиболее полезны?

Библиотека C/C++ разработчика #междусобойчик
👍10🔥8
👾 Ржавеющие плюсы: как внедрять современные проверки С++

💡Разработчик из Яндекс.Такси поделился опытом масштабного внедрения инструментов безопасности C++ — от статических анализаторов до санитайзеров.

❗️ Ключевые моменты доклада:

• внедрение CPP Hardening, Clang Lifetime Annotation и санитайзеров заняло 4 месяца
• из 40 тысяч падений тестов 20 тысяч были вызваны одной ошибкой
• санитайзеры нашли несколько сотен реальных багов в промышленной кодовой базе

Основной фокус — пятиэтапный процесс внедрения: тестирование проверок, анализ ошибок, постепенная починка багов, координация между командами и определение момента завершения работ.

Особенно актуально для компаний с большими legacy кодовыми базами, где безопасность кода критична для стабильности сервисов.

Вы узнаете, что простое включение проверок без продуманной стратегии может парализовать разработку, но правильный подход позволяет за месяц сократить количество критических ошибок с 17 тысяч до 39.

👉 Видео

Библиотека C/C++ разработчика #буст
4
😈 Полезный ли навык вайб-кодинга для реальных проектов

97% программистов уже пробовали ИИ для написания кода. Но где грань
между продуктивной помощью и потерей контроля над продуктом? Упрощает ли
вайб-кодинг жизнь джунам или затрудняет их развитие? И главное — как к
такому подходу относятся айтишники и их работодатели?

В этой статье постараемся разобраться, что такое вайб-кодинг на
самом деле, в чем его плюсы и минусы, и почему вокруг него сейчас
столько разговоров.

👉 Статья

Библиотека C/C++ разработчика
5🥰2
В каком стандарте C++ появились умные указатели?
Anonymous Quiz
11%
C++98
13%
C++03
64%
C++11
12%
C++14
📰 Свеженькое из мира C++

Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.

😎 Полезное:

Как правильно реализовать оператор присваивания — реализация своего оператора присваивания
Оптимизация времени компиляции — чек-лист по улучшению времени компиляции кода
Как внедрять современные проверки С++ — видео о подходах к внедрению инструментов безопасности

🖨Интересные проекты:

NanaZip — архиватор файлов с открытым исходным кодом (написан на основе исходного кода исходного кода 7-Zip)
RocksDB — постоянное хранилище ключей и значений для флэш-памяти и оперативной памяти
Atmosphère — кастомизированная прошивка для Nintendo Switch

Библиотека C/C++ разработчика #буст
👍2