Библиотека C/C++ разработчика
6.8K subscribers
651 photos
689 videos
8 files
937 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Media is too big
VIEW IN TELEGRAM
Опасность устарела, неопределенность недопустима: undefined behavior в С++20/23/26
Сергей Талантов

В современных стандартах С++ стало меньше UB. Разбираем на конкретных кейсах.

— Начиная с С++20 отрицательные целые числа обязательно должны быть представлены в дополнительном коде. Это сокращает количество UB в битовых операциях и не только.
— Введение std::ssize, возвращающего знаковый размер контейнеров, уменьшает количество ошибок и UB в циклах.
— Расширение времени жизни временных объектов в циклах for, появившееся в С++23, решает неочевидные проблемы.
— Казалось бы, мелочь, но инициализация std::string нулевым указателем раньше была UB, a теперь запрещена.
— В С++23 появился эксклюзивный режим открытия файла (O_EXCL), что решает проблему гонок (time-of-check to time-of-use).
— Будет ли введена арифметика с насыщением в С++26?

Некоторые конструкции языка признаются небезопасными и устаревшими, также проходимся по ним:
— Осталось ли что-то от volatile?
— Можно ли теперь делать неявный захват this по значению в лямбдах?
— Какие операции с enum теперь не в почете.

источник

#cpp #programming

👉 @cpp_lib
Хотите освоить алгоритмы, которые лежат в основе многих IT-решений? Время познакомиться с магией оптимизации!

На открытом уроке «Поиск кратчайшего пути во взвешенном графе» мы разберём алгоритм Дейкстры: от теории до практической реализации. Узнайте, как находить решения быстрее, надёжнее и эффективнее.

Алгоритмы — это как GPS для программирования. После урока вы сможете уверенно строить маршруты в графах, прокачаете свои навыки и сделаете шаг к профессиональному уровню.

Встречаемся 3 февраля в 20:00 мск, участники получат скидку на большое обучение «Алгоритмы и структуры данных».

👉 Регистрация открыта: https://vk.cc/cI0Gv4

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Автоматическая Генерация Конфигураций для Make Сборок

При разработке программного обеспечения (особенно для микроконтроллеров) рано или поздно придется столкнуться с тем, что надо как-то передавать конфигурации для данного программного проекта.

В своем опыте я пришел к выводу, что с точки зрения масштабирования кодовой базы, конфиги проще всего передавать через переменные окружения. Да.. Плюс в том, что переменные окружения можно определять прописывая прямо в скриптах (Make, CMake и т.п.).

Выглядит это так. У каждой сборки есть файл config.mk в котором перечислены программные компоненты из которых должна собираться эта конкретная сборка. Содержимое этого файла обычно выглядит так.

https://habr.com/ru/articles/798213/

#cpp #programming

👉 @cpp_lib
Пишем легаси с нуля на С++, не вызывая подозрение у санитаров. 04 — Компиляторная археология

Пишем легаси с нуля на С++, не вызывая подозрение у санитаров. 04 — Компиляторная археология

В данной статье затронем частичку компиляторной истории. И постараемся собрать проект под компилятор 1995 года. Вы спросите, но зачем? Я отвечу: Потому, что можем!

Часть 1
Часть 2
Часть 3

https://habr.com/ru/articles/876272/

#cpp #programming

👉 @cpp_lib
Пишем легаси с нуля на С++, не вызывая подозрение у санитаров. 05 — GDI рендер

В данной статье опишу реализацию GDI рендера для Windows. Узнаем как программировали деды под windows в середине 1990-ых. И наконец создадим функциональный рендер, с возможностью рисовать все типы изображений.

Часть 1
Часть 2
Часть 3
Часть 4

https://habr.com/ru/articles/877542/

#cpp #programming

👉 @cpp_lib
Поговорим об observability на Яндекс Infra Meetup #4

Приглашаем на митап про наблюдаемость приложений от Яндекс Go и Техплатформы Екома и Райдтеха Яндекса. В программе два трека, выбрать можно любой: 

CaseLab: observability. Интерактивный формат решения практических задач совместно с модераторами. 

CaseStudy. 3 доклада от спикеров сервисов: 
— Толя Беляев расскажет про варианты сбора метрик приложения микросервисной архитектуры
— Леша Королев объяснит, как построить дашборд всей платформы Такси
— Леша Золотухин покажет, как создать диагностические дашборды в инфраструктуре на 2000+ микросервисов

После CaseLab и докладов — нетворкинг в неформальной атмосфере и афтепати.
13 февраля, 18:30
Москва, офлайн
 Успейте зарегистрироваться и зовите коллег!
 
Обратите внимание, количество мест ограничено. После регистрации обязательно дождитесь подтверждения заявки.
Практика языка C, 2023-2024

Семинар 1.1. Алгоритм Евклида.
Семинар 1.2. Системы счисления.
Семинар 1.3. Числа Фибоначчи.
Допсеминар: unix shell
Семинар 2.1. Простые числа.
Семинар 2.2. Побитовые вычисления.
Семинар 2.3. Время и случайность.
Углубление пройденного: логическая память и виртуальная память.
Семинар 3.1. Линейный поиск и простые сортировки.
Семинар 3.2. Стратегия "разделяй и властвуй".

источник

#cpp #programming

👉 @cpp_lib