dimka76 61 15 июля Опубликовано 15 июля · Жалоба On 7/15/2024 at 11:35 AM, EdgeAligned said: Да, это такой упоротый синтаксис, называется Обфускация Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 23 15 июля Опубликовано 15 июля · Жалоба В 15.07.2024 в 12:04, dimka76 сказал: Обфускация Вот вам смешно, а у меня весь проект в таком стиле написан. Который нужно быстро подхватить и дописать свою часть. Я уже молчу, что пол-проекта автогенерится на ямлах.. Ну и естественно, молодые гении влепили 20 стандарт в полный рост. На меньшее они не согласны. Иначе как умище-то показать. В 15.07.2024 в 11:35, EdgeAligned сказал: вон те скобочки [](){} означают запись лямбда-функции. Спасибо за наводку. Примерно так и думал. Но в физику процесса надо ещё погрузиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 15 июля Опубликовано 15 июля · Жалоба 2 часа назад, MrYuran сказал: Вот вам смешно, а у меня весь проект в таком стиле написан. Который нужно быстро подхватить и дописать свою часть. Это ещё ничего. Хуже, когда подхватываемый проект написан в виде классической си-лапши с тоннами копипасты и глобальных переменных. Вот это да, вот это смешно:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 23 15 июля Опубликовано 15 июля · Жалоба В 15.07.2024 в 15:36, AHTOXA сказал: Это ещё ничего. Хуже, когда подхватываемый проект написан в виде классической си-лапши с тоннами копипасты и глобальных переменных. Вот это да, вот это смешно:) Плавали в таком, знаем ) На прошлой работе досталась в наследство линейка приборов, разработанная за 20 лет тремя поколениями разработчиков. Я, как последний оставшийся супер-стар, выдвинул предложения по комплексному рефакторингу, подкрепленные расчетом трудоемкости и описанием ближних и дальних выгод. По результатам полного игнора со стороны руководства написал заявление в день рождения начальника ) (случайно совпало) Прошу прощения за злостный оффтоп, больше не буду. 1 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 23 29 июля Опубликовано 29 июля · Жалоба Началось в колхозе утро.. undefined reference to `vtable for SomeClassName В прошлый раз помогло virtual ~SomeClassName() = default; Сейчас что-то другое. Были подозрения, что .cpp не собирается, но нет, объектник лежит на месте. С какого конца можно это расколупать? # что характерно, в .map есть vtable для базового абстрактного класса с адресом и упоминание для нужного производного класса, но уже без адреса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 61 29 июля Опубликовано 29 июля · Жалоба On 7/29/2024 at 1:13 PM, MrYuran said: Началось в колхозе утро.. https://stackoverflow.com/questions/3065154/undefined-reference-to-vtable Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 29 июля Опубликовано 29 июля · Жалоба On 7/15/2024 at 1:06 PM, MrYuran said: Вот вам смешно, а у меня весь проект в таком стиле написан. Который нужно быстро подхватить и дописать свою часть. Я уже молчу, что пол-проекта автогенерится на ямлах.. Ну и естественно, молодые гении влепили 20 стандарт в полный рост. На меньшее они не согласны. Иначе как умище-то показать. Спасибо за наводку. Примерно так и думал. Но в физику процесса надо ещё погрузиться. это их учат профессора, которые, в лучшем случае, один термометр осилили и до пенсии будут вспоминать, как было жарко. при этом про формы канделябров под потолком рассказывать будут долго и упорно. но при слове "прерывание" и "регистр" кричат нет нет только не это! (рассказ основан на реальных событиях, вуз, увы, реальный и очень известный) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 29 июля Опубликовано 29 июля · Жалоба 1 час назад, MrYuran сказал: virtual ~SomeClassName() Когда виртуальный деструктор есть, но не реализован, такая проблема и будет появляться. То есть, виртуальный деструктор должен быть либо реализован здесь, либо переопределен в классе-наследнике. Если класса-наследника нет, то компилятор ищет реализацию деструктора в этом классе, но он - не реализован, только объявлен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 29 июля Опубликовано 29 июля · Жалоба Когда в виртуальном деструкторе (или вообще, виртуальном методе) пишите = default, это означает, что этот деструктор будет сгенерирован автоматически. То есть, равносильно тому, что если бы воообще его не писали. Если деструктор или конструктор не написать в классе явно, то сгенерируется конструктор (деструктор) по-умолчанию. Этот default как раз и дает принудительно такую команду. Виртуальный деструктор следует применять при наследовании классов, в которых производились операции с динамическим выделением памяти, дабы правильно освободить эту память. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 23 29 июля Опубликовано 29 июля · Жалоба Здесь все объекты - статические во флеш-памяти, то есть деструктор не имеет физического смысла. Тем не менее, убрал virtual, и одной ошибкой стало меньше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 29 июля Опубликовано 29 июля · Жалоба В этом случае деструктор вообще как бы и не нужен. Деструктор даже в создаваемых объектах не всегда нужен, а только если в объекте выделялась дин.память или использовались какие-либо ресурсы, требующие освобождения или правильного порядка завершения работы с ними. Деструктор вызывается автоматически, когда созданный объект выходит за пределы видимости. Равносильно поведению локальных переменных в функции. Если в классе деструктор не реализован, будет вызван деструктор по умолчанию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 23 30 июля Опубликовано 30 июля · Жалоба 08:55:40 Build Finished. 0 errors, 21 warnings. (took 17s.695ms) Отбой, дело было не в бобине. Там ещё отдельный траходром с системой сборки meson. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 7 сентября Опубликовано 7 сентября · Жалоба https://habr.com/ru/articles/819499/ Очередная статья про применение плюсов для управления лапками пинами. Начало было бодрым, закончили, как обычно, за упокой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 7 сентября Опубликовано 7 сентября (изменено) · Жалоба Пролистал - ничего интересного, какой-то очередной велосипед на треугольных колесах. В начале статьи - вообще картинка не от STM32, а от Rasberry Pico. Дальше автор долго рассказывает, из чего состоят порты в STM32, что такое операция &=. И в довершение - зачем-то начал разбирать, что такое HSE, HSI. Как оное относится к портам - ваще хрен пойми. В общем, пролистав больше половины портянки, плюнул на это дело. Понятно только одно - писал ту портяну начинающий, который еще вчера сам познакомился с STM32. Лично я для себя пока что остановился на такой конструкции, которая неплохо себя показала в деле: class GpioA { public: template<uint16_t value> static void SetPins() { GPIOA->BSRR = value; } // все остальное }; template<typename TPort, uint8_t PinPos> class Pin { public: static void High() { TPort::template SetPins<1 << PinPos>(); } // все остальное }; Pin<GpioA, 2>::High(); и это генерирует вот такой листинг: 2000014c: movs r2, #4 2000014e: ldr r3, [pc, #4] ; (0x20000154 <main()+8>) 20000150: str r2, [r3, #16] Возможно, в последствии найду что-то более интересное. Но пока что, на мой взгляд, это - максимум, что даёт уровень развития языка С++ как такового, по балансу между числом букв при написании и результативностью получаемого эффекта. Я не люблю тратить много букв при написании кода. А чем старше редакция С++, тем больше букв вводится в него. PS. Полистав снизу вверх ту портянку, я понял - автор пошел по изъезженной тропке - попытке переписать поставляемый сишный заголовочник на самоделку с описанием битов и регистров в стиле С++. Не знаю, кому как, но лично по мне - это огромная потеря времени. Потому как в современных тяжеловесных МК типа STM32H743 заголовочник имеет десятки тысяч строк, а помимо этого еще несколько массивных файлов с описанием ядра. И их все надо переписать, иначе не получится использовать ресурсы. Даже в рассматриваемом там STM32F0 заголовочник имеет несколько тысяч строк. И сколько времени уйдет на их переписывание? Учитывая, что С++ гораздо многословнее Си. Автор пошел по вот такому пути: struct GPIO_BSRR { static constexpr cpp_register::Field<decltype(GPIOF->BSRR), (1UL << 16), cpp_register::AccessMode::W, 1, 16> BR{}; static constexpr cpp_register::Field<decltype(GPIOF->BSRR), (1UL << 0), cpp_register::AccessMode::W, 1, 16> BS{}; и это должно быть написано для КАЖДОГО регистра. В том же H743 их - сотни! Автор той статьи ратует за то, что описания битов в С++ виде имеют более красивую подсветку синтаксиса. Но тут дело вкуса. Лично я считаю, что лучше написать уровень Hardvare Abstraction Level, чем всё время пялиться на разноцветные буковки синтаксиса. До тех пор, пока производитель не представит готовый вариант заголовочника в С++ виде, нет смысла переписывать его самостоятельно. Огромная потеря времени и сомнительный профит. Поскольку нормальные IDE давно уже предлагают автозаполнение и варианты при написании текста. Ошибиться можно разве что слепому или специально. Тем более, что нынче мало кто пользуется именно "регистрами", используют во основном кодогенераторы и готовые библиотеки абстракции. Изменено 7 сентября пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 7 сентября Опубликовано 7 сентября · Жалоба 1 час назад, EdgeAligned сказал: и это должно быть написано для КАЖДОГО регистра. В том же H743 их - сотни! В целом, если программист любит сам описывать структуры с регистрами периферии, то подход понятен. Но не понятен выхлоп - километровый код, несмотря на мнимое сокрытие сложности в дебри подальше. Все это напоминает мне тот самый мем Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться