|
25 / 25 / 14
Регистрация: 14.07.2016
Сообщений: 108
|
|||||||||||
Что означает *(uint8_t*)(&pbuf)?07.01.2017, 23:14. Показов 16008. Ответов 22
Метки нет (Все метки)
Всем привет,
Спасибо.
0
|
|||||||||||
| 07.01.2017, 23:14 | |
|
Ответы с готовыми решениями:
22
Что означает строчка кода val = val & 0xF; ? Что делает эта строчка: ++x && ++y || ++z; ?
|
|
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
|
| 08.01.2017, 08:49 | |
|
Адрес переменной pbuf приводится к типу "указатель на uint8_t", после чего значение по этому адресу записывается в переменную memtype (с неявным преобразованием к типу uint8_t). Иными словами, в memtype заносится адрес переменной, на которую указывает pbuf. Смысл этой конструкции для меня остаётся загадкой.
Добавлено через 9 часов 9 минут Ещё важно отметить, что преобразование указателя к типу uint8_t происходит с потерей старших байтов, поскольку тип uint8_t - восьмибитный, и адрес в него никак не влезет. Поэтому остаётся неясным, зачем вообще может понадобится такая конструкция.
2
|
|
|
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 08.01.2017, 09:41 | ||
|
1
|
||
|
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
||
| 08.01.2017, 10:11 | ||
memtype как-то по другому. Например, address_low_byte. Тем самым подчеркнув, что мы понимаем, что делаем, и нам действительно нужен только младший байт.
0
|
||
|
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 08.01.2017, 11:04 | ||
|
2
|
||
|
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
||
| 08.01.2017, 12:04 | ||
|
0
|
||
|
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 08.01.2017, 12:25 | ||
Сообщение было отмечено ArtemKolesnikov как решение
РешениеДобавлено через 10 минут т.е.&buf приводят к типу uint8_t* а потом извлекают значение по этому указателю. поскольку указатель имеет тип uint8_t* то и извлекается один байт который уже ни к чему не приводится при присваивании.
2
|
||
|
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
|
|
| 08.01.2017, 12:28 | |
|
Да, теперь понял. Спасибо.
0
|
|
|
|
||
| 08.01.2017, 12:38 | ||
|
Смысл конкретно данного примера мне так же непонятен. Если это фрагмент какого-то менеджера памяти, то логика его работы будет различаться на big-endian и little-endian
1
|
||
|
25 / 25 / 14
Регистрация: 14.07.2016
Сообщений: 108
|
||||||
| 08.01.2017, 17:39 [ТС] | ||||||
|
Всем огромное спасибо за участие!
Я могу привести весь код функции (это из готового официального примера от производителя), там потом полученное значение сравнивается с магическими (для меня) константами и pbuf приводится к data, xdata или pdata. и выполняется действие по макросу Кликните здесь для просмотра всего текста
0
|
||||||
|
|
||
| 08.01.2017, 17:52 | ||
|
Кому интересен оригинал, видимо, следует заглянуть сюда https://github.com/elechouse/W... /hal_nrf.c
0
|
||
|
25 / 25 / 14
Регистрация: 14.07.2016
Сообщений: 108
|
||
| 08.01.2017, 18:07 [ТС] | ||
|
Это код из программного обеспечения к комплекту разработчика от производителя чипа. Скачивается на официальном сайте (без гитхаба). чип nRF24LE1.
0
|
||
|
|
|||
| 08.01.2017, 18:51 | |||
|
0
|
|||
|
25 / 25 / 14
Регистрация: 14.07.2016
Сообщений: 108
|
|||
| 08.01.2017, 19:22 [ТС] | |||
|
Не по теме: Любой вопрос на любом форуме исчерпан только тогда, когда задавший вопрос (ТС) вопрос сам для себя решит, что он во всем разобрался не без помощи тех, кто помог ему в этом разобраться и дал правильный намек.
0
|
|||
|
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
|
|
| 09.01.2017, 06:29 | |
|
3
|
|
|
25 / 25 / 14
Регистрация: 14.07.2016
Сообщений: 108
|
||
| 09.01.2017, 11:37 [ТС] | ||
|
Вас тоже нужно отблагодарить за ваше ценное замечание? Ок, спасибо. Вообще вопрос решен, я объяснение получил, а дальше сам буду вникать в глубокие конкретные подробности, параллельно разбераясь с volatile.
0
|
||
|
|
||||||
| 09.01.2017, 11:42 | ||||||
|
Судя по тому, что я вижу в этом коде, инструкция
uint8_t** в целое типа uint8_t. Причем каст к uint8_t* и разыменование дает эффект реинтерпритации байтов pbuf как uint8_t. По аналогии с плюсовым reinterpret_cast-ом. Что касается "почему именно так", мне думается просто из-за того, что нужно было валидное и портабельное решение. И, навскидку точно не скажу, но на глаз похоже, что оно еще и endian-независимое.
1
|
||||||
|
|
||
| 09.01.2017, 11:56 | ||
|
Как вариант вполне может быть так, что железка big-endian и в ней пространство физических адресов раскидано по сегментам с разными свойствами. Типа того, что сегменты с адресами 0x0000-0x00ff, 0x0100-0x01ff, 0xfe00-0xfeff обладают какими-то особыми свойствами. Но это мои догадки из разряда "ткнуть пальцем в небо", что бы понять, что там в реальности, надо подробно изучать весь исходник и описание железки
3
|
||
| 09.01.2017, 11:56 | |
|
Помогаю со студенческими работами здесь
20
ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? Что означает && в программе ЧПУ?
query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так? Что означает *& Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|