🔹 Зачем?
Работа с перечислениями (enum) в C++ часто требует дополнительного кода: преобразование в строку, проверка значений, итерация по всем вариантам. Библиотека conjure_enum автоматизирует эту рутину!
🔹 Что умеет?
✅ Генерация to_string() для enum
✅ Проверка валидности значений (is_valid)
✅ Итерация по всем элементам enum
✅ Поддержка enum и enum class
✅ Минимальный оверхед (всё вычисляется на этапе компиляции)
🔹 Пример использования:
#include "conjure_enum.h"
CONJURE_DEFINE_ENUM(Color, Red, Green, Blue)
int main() {
Color c = Color::Green;
std::cout << conjure_enum::to_string(c); // "Green"
std::cout << conjure_enum::is_valid(42); // false
for (Color value : conjure_enum::values<Color>()) { ... }
}
🔹 Плюсы:
✔️ Заголовочный-only (просто подключи conjure_enum.h)
✔️ Не требует C++20 (работает даже на C++11)
✔️ Лёгкая интеграция в существующий код
💡 Кому пригодится?
— Тем, кто устал писать switch-case для enum-ов
— Если нужна удобная отладка (вывод значений в лог)
— Для валидации конфигов/сетевых данных
🔗 Ссылка
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤1
✅ Чек-лист: Оптимизация времени компиляции
Долгая компиляция убивает продуктивность. Ускорьте сборку вашего C++ проекта.
🎯 Структура проекта
✓ Используйте forward declarations вместо
✓ Минимизируйте зависимости в header файлах
✓ Применяйте
✓ Разбивайте большие файлы на модули
🎯 Современные возможности
✓ Переходите на C++20 modules постепенно
✓ Используйте precompiled headers для стабильных зависимостей
✓ Настройте distributed compilation (distcc, Incredibuild)
🎯 Инструменты и настройки
✓ Включите параллельную компиляцию (-j флаг)
✓ Используйте ccache для кеширования результатов
✓ Профилируйте время компиляции с -ftime-trace (Clang)
✓ Настройте incremental linking
Как измерить результат: Замеряйте время полной и инкрементальной сборки регулярно.
Библиотека C/C++ разработчика #буст
Долгая компиляция убивает продуктивность. Ускорьте сборку вашего 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🔥5