Рубрика «Cpp»

Введение

Если вы когда-нибудь собирали проекты на C++, то практически наверняка получали ошибку от линковщика формата:

/usr/bin/ld: /tmp/ccYa2eaO.o: в функции «foo()»:
foo.cpp:(.text+0x0): повторное определение «foo()»; /tmp/ccKEs5I7.o:main.cpp:(.text+0x0): здесь первое определение
collect2: error: ld returned 1 exit status

Опытным C++ разработчикам эта проблема известна как ODR (One Definition Rule). Но корень этой ошибки выходит далеко за рамки «используй inline в .hpp» и «не определяй ничего в .hpp».

Читать полностью »

Как утверждают психологи, «все проблемы человека происходят из детства» — все, что не дали родители в юном возрасте, потом обязательно проявит себя во взрослой жизни.

В моем, весьма специфическом случае такой нереализованной мечтой детства долгое время оставался... компилятор Watcom, дорваться до которого удалось лишь спустя почти тридцать лет.

Рассказываю об этом удивительном проекте.

Читать полностью »

Введение

На дворе 2026 год, технологии развиваются, а хакеры становятся сильнее и изобретают новые способы обхода средств безопасности. Один из таких методов, который уже стал классикой в 2026 году — это BYOVD‑техника (Bring Your Own Vulnerable Driver).

Суть проста: атакующий подсовывает в систему легитимный, но уязвимый драйвер, чтобы использовать его как рычаг для отключения защиты (например, чтобы убить процесс антивируса). То есть в процессе атаки через BYOVD у хакера всегда есть уязвимый легитимный драйвер, но его ищут двумя путями: первый это просто в наглую взять готовый паблик‑драйвер с сайта LoLDrivers Читать полностью »

Каждый мой проект на ESP32 заканчивался одинаково: микроконтроллер готов, датчики читаются, реле щёлкают — а дальше надо руками писать HTML, CSS, JS и протокол поверх веб‑сокета, чтобы увидеть пару графиков в браузере. На третий раз я решил, что хватит, и сделал библиотеку RisalDash: интерфейс описывается на C++ в несколько строк, а весь фронтенд и протокол генерируются сами и отдаются самим контроллером.

cpp

dash.gauge ("Voltage", &volts, 0, 14, "V");

dash.chart ("Temperature", &temp, "C");

dash.toggle("Pump", &pump, [](bool on){ digitalWrite(PUMP, on); });

dash.begin();   // сохранённый Wi-Fi → подключиться; первый запуск → captive-портал

Читать полностью »

В современных нейросетях критически важно, сколько физической памяти занимает каждый параметр. В этой работе я попытался уйти от классического float32 в нейросетевом слое к uint8 без квантования. Для этого все вычисления проводились сразу по правилам арифметики остатков в конечном поле Галуа GF(137).

Стоит сказать, что это не замена обычному инференсу и не попытка доказать, что все должны срочно переписать модели на вычеты по модулю 137. Я взял небольшой слой, байтовые веса, нативное ядро, ARM NEON и несколько базовых реализаций для сравнения.

Читать полностью »

Привет!

На днях HR-отдел отклонил мое резюме на позицию джуна. Вместо фидбека я получил ответ «В нашей команде слишком много козерогов, и нашему тарологу не понравился ваш Сатурн». Сначала я хотел возмутиться, но потом подумал. Может звезды не врут? Возможно наш звездный язык программирования определяется в зависимости от расположения планет во время первого запуска IDE.

Я провел фундаментальное исследование, проанализировал натальные карты Гвидо ван Россума, Страуструпа и прочих, и составил первый в мире точный гороскоп языков программирования.

И результат меня поразил.


♈ Овен (21 марта — 19 апреля): C++

Читать полностью »

Собрал для вас подборку редких, необычных и малоизвестных UI-библиотек — для построения интерфейсов в играх, на устройствах и десктопном ПО.

Необычный интерфейс - 1

Ликбез

Стоит задать на любом техническом форуме вполне невинный вопрос:

какую UI-библиотеку/фреймворк выбрать для нового проекта?

и разверзнутся натурально бездны ада.

Читать полностью »

Дорогие читатели, команда PVS-Studio представляет вашему вниманию интервью с Андерсом Шау Кнаттеном, автором книги "C++ Brain Teasers: Exercise Your Mind". В этой статье вы познакомитесь с его новой книгой по C++, откроете для себя увлекательные способы изучения стандартов языка и рассмотрите некоторые распространённые ошибки, которые допускают C++ разработчики, а также узнаете немного о биографии Андерса. Надеемся, вам понравится!

Читать полностью »

Заметка рассчитана на начинающих C++ программистов, которым стало интересно, почему везде твердят, что нужно использовать delete[] для массивов, но вместо внятного объяснения – просто прикрываются магическим "undefined behavior". Немного кода, несколько картинок и взгляд под капот компиляторов – всех заинтересованных прошу под кат.

delete_or_delete_for_array_ru/image1.png

Читать полностью »

Способы переписать логические параметры в С++ - 1

Программисты читают код намного чаще, чем пишут его, поэтому важно писать понятный, последовательный, однозначный код. Автор книги С++17 in detail написал о способах избегать путаницы. Делимся его материалом к старту курса по разработке на С++.


Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js