Библиотека
spdlog превращает рутинные записи в лаконичные вызовы и сохраняет мощь гибкой настройки без сложных файлов и лишних аргументов.В ней есть:
• Легкий старт даже в большом проекте;
• Понятные отчеты сразу после запуска;
• Встроенная защита от задержек при запись.
Добавьте
spdlog и забудьте о долгой настройке логов.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥6👍5🤝1
С
curlpp вы создадите компактную утилиту, которая надёжно загружает файлы по HTTP и отображает индикатор прогресса прямо в терминале.В этой задаче:
• Проводит загрузку быстро и без лишних пауз;
• Выводит статус работы прямо в окне консоли;
• Обеспечивает понятную обработку ошибок без лишних заморочек.
Используйте этот подход в своих проектах и экономьте время на загрузках каждый день.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤4👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Это не просто учебник, а визуальная карта: ты вводишь тему, и сразу видишь список лучших ресурсов для погружения. Можно строить свой путь обучения. А ещё всё открыто и развивается сообществом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥5❤2
Пишем свой assert с логированием и stacktrace!
Сейчас научимся создавать удобный макрос
Начнём с подключения библиотек из стандарта C++23 — ничего дополнительно не ставить не нужно:
Теперь объявим функцию-обёртку, которая будет бросать исключение с нужными данными:
И сам макрос, использующий эту функцию:
Давайте проверим на примере:
При запуске получим:
🔥 Таким образом ты получаешь собственный
📣 C++ Ready | #практика
Сейчас научимся создавать удобный макрос
ASSERT, который при провале проверки выводит не только выражение и место в коде, но и подробный stacktrace. Это пригодится для быстрой отладки и локализации ошибок в сложных проектах.Начнём с подключения библиотек из стандарта C++23 — ничего дополнительно не ставить не нужно:
#include <iostream>
#include <stdexcept>
#include <source_location>
#include <stacktrace>
Теперь объявим функцию-обёртку, которая будет бросать исключение с нужными данными:
void assert_fail(const char* expr,
const std::source_location& loc = std::source_location::current()) {
std::cerr << "ASSERTION FAILED: (" << expr << ")\n"
<< " at " << loc.file_name() << ":" << loc.line()
<< " in " << loc.function_name() << "\n"
<< "Stacktrace:\n" << std::stacktrace::current() << "\n";
std::terminate();
}
И сам макрос, использующий эту функцию:
#define ASSERT(expr) \
((expr) ? void(0) : assert_fail(#expr))
Давайте проверим на примере:
int factorial(int n) {
ASSERT(n >= 0);
return n <= 1 ? 1 : n * factorial(n - 1);
}
int main() {
std::cout << "5! = " << factorial(5) << "\n";
std::cout << "(-1)! = " << factorial(-1) << "\n"; // вызовет ASSERT
return 0;
}При запуске получим:
5! = 120
ASSERTION FAILED: (n >= 0)
at example.cpp:8 in factorial()
Stacktrace:
#0 factorial() at example.cpp:8
#1 main() at example.cpp:14
#2 __libc_start_main
...
🔥 Таким образом ты получаешь собственный
assert с детальным логом и стек-трейсом — никакой потери контекста при отладке и быстрый поиск причины крашей.Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍10🔥6🤝1
Когда обычный текст превращается в матрицу пикселей, этот инструмент без усилий создаёт чёткий QR-код, сохраняет его в PNG и подготавливает для мгновенного использования.
В этой задаче:
• Быстро генерируется изображение для мобильного сканирования;
• Минимум зависимостей — один заголовочный файл и PNG-кодек;
• Лёгко интегрируется в любой C++-проект без сложных сборок.
Проверьте, как просто получить готовый QR-код и делиться ссылками мгновенно!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36❤10👍3🤝1