Jump to content

    

AHTOXA

Свой
  • Content Count

    3617
  • Joined

  • Last visited

Community Reputation

0 Обычный

1 Follower

About AHTOXA

  • Rank
    фанат дивана
  • Birthday 09/04/1970

Контакты

  • Сайт
    https://antongus.github.io

Информация

  • Город
    Уфа

Recent Profile Visitors

12274 profile views
  1. Здесь есть ограничение на минимальную длину слова для поиска. Но можно искать слово операционн*. (также можно выбрать поиск только в заголовках тем)
  2. Если переменная используется только в одной функции, и нужно, чтобы её значение сохранялось между вызовами, то вполне логично объявить её static. Естественно, надо быть уверенным, что функция вызывается только из одного потока и без рекурсии. Например, для обработчиков прерывания - милое дело.
  3. Мейерса плюсую. И ещё читал (вернее, в процессе) "Вандевурд Д., Джосаттис Н., Грегор Д. - Шаблоны C++. Справочник разработчика, 2-е издание - 2018". Это про шаблоны. Идёт туго, но очень интересно. К сожалению, у меня нет кейла, чтобы попробовать. Если вам не лень, попробуйте воспроизвести проблему (или её отсутствие) в онлайн-компиляторе. Если проблема воспроизведётся, то бросите сюда ссылку, и будем смотреть вместе. Ну или попробуйте компилятор поновее.
  4. Да, видимо он не умеет в c++17. Но можно и без этого обойтись: тынц.
  5. Можно почитать здесь. Из книжек - рекомендую "Галовиц Яцек - C++17 STL. Стандартная библиотека шаблонов". Найти можно, например, здесь. Там достаточно неплохо описаны нововведения c++ 17.
  6. А тот вариант, что я предложил выше? Вроде, вполне красиво: static_assert(isEqual(a1, a2, a3), "vars are not equal!");
  7. Какая вам разница, насколько оптимально будет выполнено сравнение? Оно же не в рантайме.
  8. Вообще, если константы должны быть равны, то это одна константа. Или константы, определяемые одна через другую.
  9. Так пойдёт? template <typename T, typename... Types> constexpr auto firstArg(T arg, Types... ) { return arg; } template <typename T, typename... Types> constexpr auto isEqual(T arg, Types... args) { if constexpr (sizeof...(args) > 1) return (isEqual(args...)); if constexpr (sizeof...(args) > 0) return (arg == firstArg(args...)); return true; } int main() { static constexpr int a1 = 1; static constexpr int a2 = 1; static constexpr int a3 = 1; static_assert(isEqual(a1, a2, a3), "vars are not equal!"); } ЗЫ. Вот здесь можно потыкать.
  10. STM32L0 ADC+TIM

    Может, надо включить АЦП: ADC1->CR |= ADC_CR_ADEN;
  11. STM32MP1 - bare metal

    Ух ты, выглядит интересно. Но я как представлю, сколько мучений будет найти доки...
  12. Если берёте адрес, то компилятор обязан создать объект.
  13. Оптимизация ломает проект.

    Вы имеете в виду, что включение оптимизации может выявить какие-то недочёты в схемотехнике? Это запросто. Поэтому я всегда пишу сразу с включённой оптимизацией.
  14. Посмотрел. Единственный кандидат на показ исключения: функция ShowException(). Вызывается из нескольких мест. Но вообще там нет такого, чтоб непрерывно сыпались исключения. Если возникает ошибка, поток завершает выполнение, и однократно показывается сообщение об ошибке. Возможно, вы продолжаете писать в закрытый порт, и от этого валятся ошибки.