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

Битовые поля, кто ж вас выдумал?

Вопрос или тема для обсуждения - нужно ли в 2020 году использовать битовые поля с непредсказ не сходу понятной позицией, не имеющие адреса? А нужно использовать жёстко заданные определения, как, например, делается в stm32f...h

/*!< SWS configuration */
#define RCC_CFGR_SWS_Pos                   (2U)                                
#define RCC_CFGR_SWS_Msk                   (0x3UL << RCC_CFGR_SWS_Pos)          /*!< 0x0000000C */
#define RCC_CFGR_SWS                       RCC_CFGR_SWS_Msk                    /*!< SWS[1:0] bits (System Clock Switch Status) */
#define RCC_CFGR_SWS_0                     (0x1UL << RCC_CFGR_SWS_Pos)          /*!< 0x00000004 */
#define RCC_CFGR_SWS_1                     (0x2UL << RCC_CFGR_SWS_Pos)          /*!< 0x00000008 */

Логично? Принято единогласно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда уже так в 2020 году) "Ашники" можно получить автоматически из SVD-файлов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, ViKo сказал:

 

Логично? Принято единогласно?

в IAR для XMEGA было так

_bp - Bit position 
_bm - Bitmask _bm = (1 << _bp) 

_gp - Bit group position 
_gm - Bit group mask _gm = (1 << _gp) 

_gc - Bit group configuration mask

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, от #define тоже избавиться! Для того нам даны в С++ constexpr.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

неправильно вопрос поставлен. Надо ли нам в 2020 использовать допотоный императивный небезопасный язык без автоматического управления памятью. А то к полям каким-то прикопались. А файлы *.h не смущают? Это дикость, древность и толком непонятно, зачем оно надо. C# с явой как-то без них прекрасно.

А я так стал и вовсе весь почти код в самих h и писать, лень мне прототип-реализация дважы расписывать. Правильно оно или нет - не знаю, но мне удобнее и точка. Хотя иногда и приходится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, DASM said:

Надо ли нам в 2020 использовать допотоный императивный небезопасный язык без автоматического управления памятью.

Поскольку вопрос задан относительно микроконтроллеров, думаю, что Си# точно не место. А что можно сказать об атвтоматическом управлении памятью в какой-нибудь крохе типа STM32F030?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну ладно с памятью. Хидеры то зачем? Раньше они были нужны, чтобы  проект повторно быстро собирался. Сейчас и программно компиляторы умнее, и машины мощнее. Я один считаю - что это странно, в хидере фцию или метод обзови, а в срр определяй ее. Зачем плодить сущности?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, DASM said:

Зачем плодить сущности?

Не так уж и быстро всё компилируется. У меня проект для микроконтроллера полностью компилируется примерно минуту. А если писать код в хидерах, то как компилировать только один файл? Он же за собой остальные заголовончики (компилируемые) потянет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, haker_fox said:

Не так уж и быстро всё компилируется. У меня проект для микроконтроллера полностью компилируется примерно минуту. А если писать код в хидерах, то как компилировать только один файл? Он же за собой остальные заголовончики (компилируемые) потянет.

В реализации языка нынешней да, потянет. На с 32 потоками это быстро, линковка да - параллелится никак, но ей и хидеры не в помощь.

И главное, проекты на шарпе собираются куда быстрее.. загадка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, DASM said:

На с 32 потоками это быстро,

Богато живёте) У меня вот четыре ядра, следовательно иар компилит одновременно четыре исходника. А всего их около 50...(((

9 minutes ago, DASM said:

И главное, проекты на шарпе собираются куда быстрее..

Про это ничего не знаю, но полагаю, либо там особо копилятор не изощряется, либо очень много сделано в виртуалке, на которой код исполняется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В Си-диез, типа, байт-код на выходе. Его Нет.фреймворк интерпретирует при исполнении. 

По поводу заголовков, согласен, выглядит странным запихивание определений функций, шаблонов в hpp. Ничего, потерпите, скоро модули придумают, и вся мировая общественность аж содрогнется от умиления... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, ViKo said:

аж содрогнется от умиления... 

так же как и от языка "D" и от ИИ вместо программеров, от полетов на Марс, термоядерного пром. реактора, доступных Amoled мониторов , лекарства от всего, .... короче я слишком стар верить в эти сказки ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, haker_fox сказал:

Не так уж и быстро всё компилируется. У меня проект для микроконтроллера полностью компилируется примерно минуту. А если писать код в хидерах, то как компилировать только один файл? Он же за собой остальные заголовончики (компилируемые) потянет.

Так не надо все .h включать во всё сразу. И не будет "тянуть". По уму .h-файлы нужно включать только туда, куда нужно.

И минута - это как-то сильно много? Вы или линух каждый раз перекомпилируете или у вас комп 20-летней несвежести.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, jcxz said:

у вас комп 20-летней несвежести.

Да, несвежий.

image.png.7400206b4f382e67a85e1bb2da22d6d4.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 минут назад, haker_fox сказал:

Да, несвежий.

image.png.7400206b4f382e67a85e1bb2da22d6d4.png

Тогда Вы какие-то сказки рассказываете. Только что для теста перекомпилил свой проект: 186 файлов (только файлы .c/.asm/.h) объёмом 3 МБ время компиляции =31 сек. На стареньком i3-3220. Это при полной перекомпиляции всех файлов всего проекта. IAR 7.80.4

 

PS: Хех! - заметил, что в настройках IAR стояло "использовать 2 ядра из доступных 4-х". Исправил на "использовать все 4" - время уменьшилось до 25 сек.

PPS: Подозреваю, что если отключить генерацию листингов (которая у меня всегда вкл.) да перенести проект на виртуальный диск, да поставить IAR на SSD, то время ещё уменьшится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...