-
- ЫЫyкпy спасибо за наводку. Разобрался. Правило такое. Контейнер (тип данных битового поля) должен обеспечивать удобный доступ (за минимум операций, амперсанд с маской и сдвиг ) к битовому полю, если этого не происходит битовое поле выравнивается на величину контейнера. То есть, если битовое поле лежит в разных байтах, первый из которых четный, тип контейнера должен быть минимум u16. А если нечетный, то u32. - IBAH(03.01.2024 14:00)
- Думаю, что значение Result.ValueX извлекается корректно. И у вас проблема с тем, куда вы кладёте эти данные и откуда их получаете для проверки. Nikolay_Po(458 знак., 03.01.2024 13:42)
- Стандарт языка почти ничего не говорит о размещении битовых полей в
структурах, всё implementation defined. К счастью у IAR есть доки
где всё это достаточно подробно описано, в том числе и как
происходит размещение битовых полей. - ЫЫyкпy(02.01.2024 22:29)
- Это мы ещё "индейцев" не вспомнили. - VladislavS.(02.01.2024 22:48)
- И вообще, битовые поля - худшее что есть в языке. Хуже, разве что,
только макросы. - VladislavS.(02.01.2024 22:00)
- почти "Битовое поле - инструмент (с) VladislavS" ... Ввели - и
ладно. Там уж пускай кодер думает уместно оно или нет. - POV(02.01.2024 22:05)
- Ну так правильным пацанам потратить 64 бита на булеву переменную
как два пальца. Их так научили... - Codavr(02.01.2024 22:22)
- Наш человек ради халявы отдест что угодно. 64 бита для доступа к
bool в битовом поле - да кто их считает :) - VladislavS.(02.01.2024 22:54)
- Кстати если бы ТС выкинул прагму, а вместо чара поставил инт, то
ему не надо было бы гимороиться с 32 битами ;) - Codavr(02.01.2024 23:00)
- Специально для любителей секаса в гамаке и на лыжах :)) у IAR есть
несколько стратегий размещения битовых полей. Их можно выбрать
прагмой ЫЫyкпy(87 знак., 02.01.2024 23:28)
- Не пользую прагмы без острой необходимости. - Codavr(02.01.2024 23:40)
- Специально для любителей секаса в гамаке и на лыжах :)) у IAR есть
несколько стратегий размещения битовых полей. Их можно выбрать
прагмой ЫЫyкпy(87 знак., 02.01.2024 23:28)
- Кстати если бы ТС выкинул прагму, а вместо чара поставил инт, то
ему не надо было бы гимороиться с 32 битами ;) - Codavr(02.01.2024 23:00)
- Наш человек ради халявы отдест что угодно. 64 бита для доступа к
bool в битовом поле - да кто их считает :) - VladislavS.(02.01.2024 22:54)
- Ну так правильным пацанам потратить 64 бита на булеву переменную
как два пальца. Их так научили... - Codavr(02.01.2024 22:22)
- Ну началось, адепты терабайтов подключились к мелкоконтроллерам ... - Codavr(02.01.2024 22:02)
- +1. Многим рекомендациям всемирно известных гуру нужно следовать с осторожностью. В эмбеддед многое совсем не так, как в мире больших машин с их гигабайтами и гигагерцами. Размеры самих проектов, численность команды, их средняя квалификация сильно отличаются. А другие проблемы требуют других решений. - ЫЫyкпy(02.01.2024 22:52)
- почти "Битовое поле - инструмент (с) VladislavS" ... Ввели - и
ладно. Там уж пускай кодер думает уместно оно или нет. - POV(02.01.2024 22:05)
- А ты отладчиком глянь содержимое Result и Result.ValueX. "Ты все поймешь, ты все увидишь там, Ты все поймешь и все увидишь сам..." Codavr(1 знак., 02.01.2024 22:00, youtube)
- Поля сделайте uint32_t и всё будет норм. VladislavS.(98 знак., 02.01.2024 21:52)
- спасибо, помогло. sizeoff был 6, стал 4. Почему он мне варнинга никакого не дал? - IBAH(02.01.2024 22:40)
- Видимо да. "char" там всё и попортило т.к. размещение переменной разделилось между двумя байтами. - POV(02.01.2024 22:02)
- Эммм... а есть ли у афтора понимание что компилятор такое может
выкрутить черти во что.. Ты же ему даешь возможность все переменные
тусовать как удобно, а не как думалось... POV(196 знак., 02.01.2024 21:27)
- Нихуя не понял... Но очень интересно - IBAH(02.01.2024 21:40)
- sizeof структуры проверь - как он упаковал переменные. - POV(02.01.2024 22:00)
- Нет никакой гарантии что переменные по 1 биту будут занимать один бит. Ты ж своими руками выделил переменную длиной в разрядную сетку под КАЖДУЮ. А если один условный int разбил на несколько переменных, то и их порядок и битность будут соблюдены... POV(34 знак., 02.01.2024 21:45)
- Нихуя не понял... Но очень интересно - IBAH(02.01.2024 21:40)
- Нельзя адресовать битовое поле. Сделай union. И, да, адресовать
что-либо НЕ на границе байта, тоже нельзя. Выровняй. - Cкpипaч(02.01.2024 21:26)
- ТС стебётся, а вы все ведётесь... - SciFi(02.01.2024 22:13)
- Вообще-то на календаре второе января. Первый день нового года :) - Cкpипaч(02.01.2024 23:00)
- Я не стебусь, просто некоторые, на своем хуторе, ничего круче
юниона не видели. А крестопоклонник сразу понял в чем дело. - IBAH(02.01.2024 22:39)
- А меня ты видимо проигнорил? ))) По моему рецепту порядок полей был
бы сохранен даже при нарушении упаковки. Это раз... POV(89 знак., 02.01.2024 22:46)
- я просто не понял. было слишком красноречиво - IBAH(02.01.2024 22:53)
- А меня ты видимо проигнорил? ))) По моему рецепту порядок полей был
бы сохранен даже при нарушении упаковки. Это раз... POV(89 знак., 02.01.2024 22:46)
- а ты ему растолкуй таблицу умножения. - =L.A.=(02.01.2024 22:26)
- например, так работает в PIC-C =L.A.=(639 знак., 02.01.2024 21:56 - 22:04)
- Почему нельзя? Andreas(1 знак., 02.01.2024 21:55, ссылка)
- Что значит почему??? По стандарту языка. VladislavS.(1 знак., 02.01.2024 21:57, картинка)
- У ТС нет такого. - Andreas(02.01.2024 21:59)
- И где в этом примере использование АДРЕСа (через указатель)
переменной ? - POV(02.01.2024 21:57)
- У ТС тоже нет адреса битового поля. - Andreas(02.01.2024 21:58)
- Да, виноват. "Звездочка" в lvalue. Видать там там косяк с Mouse. - POV(02.01.2024 21:59)
- Да там много косяков может быть. И слева у него наверчено, и с
упаковкой не уверен, что дырок не может быть. - Andreas(02.01.2024 22:02)
- Выше уже наш плюсовик высказался - косяк объявления выскочил из-за типа char. Ну и того, что каждому полю своя переменная. - POV(02.01.2024 22:07)
- Да там много косяков может быть. И слева у него наверчено, и с
упаковкой не уверен, что дырок не может быть. - Andreas(02.01.2024 22:02)
- Да, виноват. "Звездочка" в lvalue. Видать там там косяк с Mouse. - POV(02.01.2024 21:59)
- У ТС тоже нет адреса битового поля. - Andreas(02.01.2024 21:58)
- Что значит почему??? По стандарту языка. VladislavS.(1 знак., 02.01.2024 21:57, картинка)
- ТС стебётся, а вы все ведётесь... - SciFi(02.01.2024 22:13)