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

Каждый раз при наборе ключевого слова template у меня за плечом магическим образом появляется какой-то коллега и задает стандартные вопросы:
— Это же будет долго компилироваться?
— Это же будет нечитабельно, мы не сможем это поддерживать?
— Там же будут отвратительные ошибки компиляции, которые мы разберем только консилиумом буддийских монахов?

И все эти вопросы повторяются раз за разом. Компилируется долго не все, а то, что компилируется долго, — зачастую можно ускорить. Писать шаблоны можно по-разному, кое-что можно написать красиво, емко и наглядно. Да и ошибки можно причесать новыми инструментами современного С++.

В докладе — некоторые идеи по поводу медленных и сложных шаблонов, идеи по их ускорению, и развенчание некоторых мифов.

источник

#cpp #programming

👉 @cpp_lib
Пишем игру для игровой ретро-консоли Anbernic на C++

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

Как всё начиналось
Не так давно ко мне в руки попала игровая консоль Anbernic RG35XX SP. Это портативная игровая консоль на базе четырёхъядерного процессора Allwinner H700 с ядрами Cortex-A53, которая имеет на борту операционную систему OFW (дистрибутив Linux, основанный на Ubuntu). Консоль предназначена для запуска ретро игр на эмуляторе Retroarch. Этот эмулятор поддерживает эмуляцию множества популярных игровых консолей 90х и 2000х и позволяет запускать ТЫСЯЧИ популярных игр, которые можно устанавливать на SD карточку.

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

#cpp #programming

👉 @cpp_lib
Низкоуровневый скриптинг на C++ для игровых движков

Я постарался охватить только основы, но текст всё равно получился очень длинным.

libriscv — это зрелый эмулятор RISC-V, который в настоящее время используется в игровых движках. Насколько мне известно, это единственный эмулятор, в котором основной акцент делается на обработке задержек, а также предоставляются специализированные решения и инструменты для выполнения быстрых вызовов при обращении с функциями — как входящих, так и исходящих. Причём, всё это заключено в безопасной песочнице. Задержки, наблюдаемые в libriscv, гораздо ниже, чем в эталонных эмуляторах.

Меня многие спрашивали, как им пользоваться, но здесь интереснее то, как вообще может прийти в голову мысль писать скрипты на C++ — не слишком ли сложно это будет? Оказывается, нет, не очень. Вот уже несколько лет я пишу на C++ скрипты для одной большой и одной не очень большой игры, и меня почти не посещало ощущение, что виной каким-то возникающим при этом проблемам являются язык C++ или связанные с ним скриптовые API. Я много лет программирую на Lua, а до этого пользовался обычным C. Но сейчас современный идиоматический C++ — то, что мне нужно. Причём, я могу писать на этом языке как в самом игровом движке, так и за его пределами, при этом опираясь (буквально) на одни и те же абстракции и оперируя одинаковыми структурами данных. Наконец, C++ просто очень мощный. Правда, я признаю, что о вкусах не спорят, и при работе с C++ также не обойтись без компромиссов.

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

#cpp #programming

👉 @cpp_lib
Лаконичный макрос defer для C++17

Ручное управление ресурсами в низкоуровневом си-подобном коде на C++ — довольно хлопотное занятие. Создание достойных RAII-врапперов для каждого используемого сишного API не всегда практично, а использование подходов с goto cleanup или множеством вложенных if (success) вредит читаемости кода.

Макрос defer как никогда кстати! Отложенная лямбда будет выполнена при выходе из области видимости, независимо от того, будет ли выполнен return, брошено исключение, или даже выполнен goto наружу. Данный макрос по-настоящему zero-cost и не зависит от рантайма C или стандартной библиотеки, поэтому его можно использовать даже в разработке под ядро ОС.

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

#cpp #programming

👉 @cpp_lib