Библиотека C/C++ разработчика
6.81K subscribers
655 photos
690 videos
8 files
940 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Media is too big
VIEW IN TELEGRAM
Возможности С++ для программирования микроконтроллеров
Игнат Ворошилов


Обычно, программирование микроконтроллеров подразумевает использования языков программирования ASM, C, и лишь изредка C++. Но даже те проекты, которые написаны с использованием C++, написаны в стиле C, без использования преимуществ C++ в полной мере. Эти утверждения справедливы для подавляющего большинства проектов с открытым исходным кодом, библиотек от разработчиков микросхем, различных SDK и иже с ними. На мой взгляд, игнорирование возможностей C++ и возможностей ООП, при разработке ПО для микроконтроллеров, неоправдано. Предлагаю рассмотреть конкретные примеры использования возможностей языка C++, которые помогут сэкономить время разработчика и повысить качество проекта.

источник

#cpp #programming

👉 @cpp_lib
👍4
Лекции С++ продвинутый поток ФПМИ 2023-24

Лекция 1. Введение в язык C++. Основные типы и операции над ними
Лекция 2. Основные команды в терминале. Компиляция программ
Лекция 3. Объявления и определения, области видимости, пространства имен
Лекция 4. Выражения и операторы. Управляющие конструкции
Лекция 5. Compile-time errors, runtime errors, undefined behavior
Лекция 6. Указатели
Лекция 7. Стековая, статическая и динамическая память
Лекция 8. Массивы, функции и указатели на функции

источник

#cpp #programming

👉 @cpp_lib
👍8
Библиотека Ranges в C++20

Благодаря библиотеке ranges работа со стандартной библиотекой шаблонов (STL) стала намного удобнее и мощнее. Прежде всего, алгоритмы библиотеки ranges, могут работать непосредственно на контейнере и могут быть композитными. Кроме того, в библиотеке ranges сделано несколько уникальных конструктивных решений, о которых вы должны знать.

https://www.modernescpp.com/index.php/the-ranges-library-in-c20-design-choices/

#cpp #programming

👉 @cpp_lib
👍31
Пишем свой QTableView с нуля

Итак жил был фреймворк Qt и последние 10 лет ничего почти в нем не менялось. И захотел один чел написать свой QTableView с нужным ему функционалом, а именно захотелось ему выводить ячейки в несколько рядов в одной строке. Ещё ему хотелось растягивать одну из ячеек по ширине двух других и т.д. (ну как в 1С например).

Искал, искал чел готовый пример в интернете и не находил. И вот однажды подумал он посмотреть как сделан внутри сам QTableView и стало плохо ему от количества строк кода, не одна тысяча там.

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

#cpp #programming

👉 @cpp_lib
👍1
Советы по рефакторингу C++

Когда-то давно, в мире, где Си++ был молод, а глобальная кодовая база была невелика, можно было легко прочитать и просмотреть чужой код, затем принять его и развивать проект до бесконечности. Но, конечно, такого, скорее всего, не было, но интересно представить себе время, когда программы были короткими и простыми, но при этом законченными настолько, что функциональность не требовала расширения. В таком мире рефакторинг кода, возможно, и не требовался. Однако если кодовая база нуждается в проверке или обновлении, будь то расширение, улучшение в соответствии с изменениями в языке или даже просто проверка эффективности, то рефакторинг кода становится скорее необходимостью, чем просто приятным занятием.

Идея рефакторинга заключается в том, чтобы внести улучшения в существующий код, не меняя того, что он делает. По сути, улучшается дизайн и общая читаемость, а функциональность остается нетронутой. Преимущества рефакторинга кода заключаются в повышении эффективности, читаемости, сопровождаемости и расширяемости. А также синтаксическое и семантическое снижение сложности кода.

https://www.incredibuild.com/blog/tips-for-c-refactoring

#cpp #programming

👉 @cpp_lib
👍2
Три очень практичные фичи C++23

C++23 — это текущая рабочая версия стандарта C++. На момент написания статьи туда пока не было включено ни одной крупной фичи, но ряд небольших нововведений, а также множество отчетов о дефектах уже утверждены в стандарте. Вы можете посмотреть текущий статус и поддержку компиляторами новых фич здесь. Многие из этих нововведений представляют из себя небольшие улучшения и вещи, которыми вы, вероятно, не будете пользоваться на регулярной основе. Однако сегодня я хочу обратить ваше внимание на три новые фичи C++23, которые, на мой взгляд, выделяются на фоне остальных именно тем, насколько часто они будут встречаться в нашем коде.

https://mariusbancila.ro/blog/2022/01/17/three-cpp23-features-for-common-use/

#cpp #programming

👉 @cpp_lib
👍3
Ускорение работы за счет дублирования кода

https://voidstar.tech/code_duplication/

#cpp #programming

👉 @cpp_lib
👍4
Оптимизация с помощью аллокаторов в C++17

Благодаря полиморфным аллокаторам в C++17 можно оптимизировать распределение памяти. Эта оптимизация включает в себя производительность и повторное использование памяти.

https://www.modernescpp.com/index.php/optimization-with-allocators-in-c17/

#cpp #programming

👉 @cpp_lib
👍6🔥1
C++23: четыре новых ассоциативных контейнера

В C++23 появились четыре новых ассоциативных контейнера: std::flat_map, std::flat_multimap, std::flat_set и std::flat_multiset, которые являются полноценной заменой упорядоченных ассоциативных контейнеров std::map, std::multimap, std::set и std::multiset. Они были добавлены в C++23 по двум причинам: расход памяти и производительность.

https://www.modernescpp.com/index.php/c23-four-new-associative-containers/

#cpp #programming

👉 @cpp_lib
👍7
Введение в компиляцию C++ в командной строке

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

При использовании Unreal Engine 4 или другого высокоуровневого фреймворка компиляция кода на языке C++ в значительной степени скрыта от глаз. Это очень удобно, когда все работает, но становится препятствием, когда нужно что-то изменить. Единственный способ не стать рабом своих творений - понять, как они работают.

https://unrealistic.dev/posts/introduction-to-c-compilation-on-the-command-line

#cpp #programming

👉 @cpp_lib
4👍1
Моя борьба против знакового/беззнакового сравнения: самые распространенные нарушения

Как мы уже говорили на прошлой неделе, сравнение чисел с разными знаками может быть опасным в языке C++. Если попытаться сравнить знаковое и беззнаковое целое число, то можно получить результат, который не имеет смысла, если подходить к вопросу с математической точки зрения. По крайней мере, при правильных настройках компилятора вы получите предупреждение.

Мы также увидели, что C++20 предлагает простой и безопасный способ сравнения чисел в любое время, и он всегда вернет вам ожидаемый результат.

https://www.sandordargo.com/blog/2023/10/18/signed-unsigned-comparison-the-most-usual-violations

#cpp #programming

👉 @cpp_lib
👍3