Перейти к содержанию
    

AHTOXA

Свой
  • Постов

    4 036
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

AHTOXA стал победителем дня 18 января

AHTOXA имел наиболее популярный контент!

Репутация

15 Хороший

5 Подписчиков

Информация о AHTOXA

  • Звание
    фанат дивана
    Гуру
  • День рождения 04.09.1970

Информация

  • Город
    Array

Посетители профиля

15 996 просмотров профиля
  1. Нет, это их нестандартное языковое расширение. Чтобы с delphi-кодом взаимодействовать. Я в последнее время не люблю неявных вещей. Пишешь obj.length=0, вроде бы простое присвоение. А оказывается, что там под капотом куча побочных действий происходит. Лучше уж obj.setLength(0). Не особо длиннее, но зато явно видно вызов функции.
  2. А почему это должно стать очевидным? Для std::shared_ptr, например, тоже есть обширная документация, без чтения которой его сложно использовать правильно. И это нормально, на мой взгляд.
  3. Насколько я понял, это заголовочный файл от System.DynamicArray (из RAD Studio, который давным-давно был C++ Builder). Это очень навороченный тип, с подсчётом ссылок, итераторами, свойствами (нестандартное расширение языка, емнимс), и прочим подобным. Понятное дело, что выглядит мощно 🙂 Кучу конструкторов с разным числом параметров можно выкинуть, оставив только ветку для c++11. И так далее.
  4. Можно crc засунуть в Header, раз уж он у всех пакетов есть. Насколько я понимаю, и N будет там же, в Header. А в конце будет byte[maxLen]. Ну а почему бы и не написать, если небольшой? 🙂
  5. Это по-каковски? Если с английского, то яндыкс-переводчик пишет agile[ˈæʤaɪl]прил
  6. О, оказывается всё ещё сложнее: отображение зависит от темы. В моей теме (Electronix Neoclassic (по умолчанию)) - сейчас не видно ни уровня, ни звания. А если я включаю тему "Electronix Classic 4.5.2", то видно уровень (над аватаркой), причём мой уровень по-прежнему "фанат дивана" 🙂 А отображение звания, как я понимаю, сейчас уже отключили.
  7. Заработало частично. Поменял звание на "труженик села" - сбоку от моих сообщений поменялось, в профиле осталось старое. Очистил (ввёл пустую строку) - перестало отображаться "Звание: xxx" около сообщений. Остался я вообще без звания. Но, что интересно, в профиле осталось старое ("фанат дивана"). А при наведении на него мышкой всплывает подсказка "Гуру 6/6". В принципе, я доволен, мне главное хотелось убрать "фанат дивана" 🙂
  8. Раньше как-то можно было, начиная с определённого уровня. Я поменял на "фанат дивана". Сейчас вот подумал, что я уже не такой фанат дивана, как раньше, хотел поменять на что-то более актуальное, и не нашёл где. Это я плохо искал, или убрали такую возможность?
  9. На VL (value line) отдельный RM, RM041. Это сильно урезанные контроллеры, без USB, и с частотой до 24МГц (пишу по памяти) Это STM32F10X_MD.
  10. Я судил по изменениям в inline-ассемблере IAR-а. Сейчас он выглядит вот так: __attribute__((__always_inline__)) inline void set_interrupt_state(status_reg_t status) { asm volatile ( "MSR PRIMASK, %0\n" : : "r"(status) :"memory" ); } Ну то есть один-в-один gcc. Этож-ж-ж неспроста? 🙂 Короче, мысль моя вот в чём: в 90% случаев должно хватить простого reg; или, для большей понятности (void)reg; Но на всякий случай лучше проверить дизассемблер.
  11. Жуть какая! 🙂 Интересно, с 2010 года хоть какие-то из компиляторов, которые отбрасывают чтение volatile-переменной поменяли своё мнение? (Подозреваю, что IAR поменял, он же теперь вроде бы на LLVM сделан).
  12. Я думаю, это изменение скорости (минус 100Кб/с).
  13. Это стили кодирования пишут для групп программистов. Когда в одном проекте несколько человек. Когда пишешь один - вообще пофиг как именуешь и форматируешь. Главное чтоб тебе самому было понятно. Но даже для себя одного полезно сформулировать эти правила, чтобы потом их придерживаться. Это поможет потом поддерживать проект, когда нужно будет вернуться к нему через год-другой. Из этого тоже можно извлечь пользу: сразу видно, что идёт вызов библиотечного кода 🙂
  14. Ну да, блоком. Или вынести этот кусок в inline-функцию.
  15. А они редакторе подсвечиваются по-разному. (Я использую Eclipse для embedded-проектов, QtCreator для ПК-проектов). Префиксы мне не нравятся. Нет гарантий, что префикс соответствует реальному типу. Сменил тип - забыл про префикс. Гораздо надёжнее не полагаться на префиксы, а использовать возможности современных IDE. Навёл мышку на название типа - получил всплывающую подсказку с кусочком объявления. Если там doxigen- комментарий перед типом, то и он отобразится. Единственное место, где я оставил префиксы - это переменные-члены класса. Они у меня называются m_var; Если интересно, вот рекомендации по кодированию одного из моих старых проектов. Вот, кстати, идеальное место для применения RAII. Создаётся тип CriticalSection, в конструкторе вызываются cpu_alloc_critical_section_context(csc) и cpu_entry_critical_section(csc), а в деструкторе - cpu_leave_critical_section(csc). Тогда функция будет выглядеть так: inline void init() { CriticalSection cs(csc); SPI3->CR1 = SPI_CR1_PRESET_VAL; SPI3->CR2 = SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN; SPI3->SR = 0x0; SPI3->CRCPR = 0x0; SPI3->I2SCFGR = 0x0; SPI3->I2SPR = 0x0; __DSB(); } Это немного короче, но главное - нет шанса забыть освободить критическую секцию. Даже если где-то посреди функции сделать return;
×
×
  • Создать...