|
4 / 2 / 0
Регистрация: 30.07.2018
Сообщений: 83
|
|||||||||||
Typedef struct30.07.2018, 10:56. Показов 4711. Ответов 50
Метки нет (Все метки)
Здравствуйте форумчане.
С недавних пор пытаюсь научиться работать с микроконтроллерами. Параллельно изучаю С\С++. Так вот у меня состояние грога с таким вот кодом.
Попытка отработать такой же код с другими именами в Code Blocks работает только как набрано. Если пытаюсь изменить всю запись, но в соответсвии со своим пониманием процессов -- ничего не получается. Разъясните пожалуйста. Добавлено через 39 минут Спасибо за редактирование.
0
|
|||||||||||
| 30.07.2018, 10:56 | |
|
Ответы с готовыми решениями:
50
typedef struct typedef struct typedef struct .... |
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||
| 30.07.2018, 14:25 | |||
Сообщение было отмечено Predator79 как решение
РешениеПараллельно они находятся в объединении ( union), т.е. там зарезервирована ячейка под u32, но могут записываться или u32, или u16(оставшиеся 2 байта не трогаются) или u8 (3 байта не трогаются).Но в структуре объявлен массив из этих union'ов PORT с 32 такими элементами. Добавлено через 23 секунды Добавлено через 3 минуты Хотя можно конечно сделать свой собственный "трафарет"(структуру) на основе ITM_Type, который бы оформлял нужные байты в более удобном тебе виде, но принципиально это бы ничего не изменило.
1
|
|||
|
4 / 2 / 0
Регистрация: 30.07.2018
Сообщений: 83
|
|||||||||||
| 30.07.2018, 15:03 [ТС] | |||||||||||
|
А можем вместо
Ведь (0xE0000000UL) -- указатель.
0
|
|||||||||||
|
Комп_Оратор)
|
||||||||||||
| 30.07.2018, 15:29 | ||||||||||||
1
|
||||||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 30.07.2018, 15:29 | ||
(ITM_Type *).Выше был вопрос, что есть указательный тип? Так вот, это как раз ITM_Type *. Составной тип, указатель на ITM_Type. Объект этого типа можно создать так: ITM_Type * ptr; (где ptr - это объект, переменная типа "указатель на ITM_Type"), затем проинициализировать его определенным значением, как в нашем случае: ITM_Type * ptr = (ITM_Type *)0xE0000000UL; и обращаться уже через ptr вот так: ptr->PORT[0].u8 = (uint8_t)ch;.
1
|
||
|
Комп_Оратор)
|
||
| 30.07.2018, 15:42 | ||
|
то советую Вам это подучить. Простите Predator79, буквы д и л рядом, да и выглядят похоже. Также как и различные варианты объявления структур. Вроде и понимаешь, что ты написал, а ведь это тольуо кажется. Обявление typedef объявляет именно тип. И приведение делается к типу "указателя на тип". Потому что приводится значение указателя (адрес). И присваивается переменной указателя. А потом на ней вызывается оператор доступа -> чтобы достучаться до внутренних элементов.
0
|
||
|
Комп_Оратор)
|
|||||||
| 30.07.2018, 15:49 | |||||||
А отдыхать и правда надо.
0
|
|||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 30.07.2018, 16:09 | ||
|
Добавлено через 16 минут И ещё. У меня есть ощущение, что компилятор того микроконтроллера С++ не поддерживает, только чистый С...
0
|
||
|
Комп_Оратор)
|
|||||||
| 30.07.2018, 16:13 | |||||||
struct{...} называемой тэгом, но по смыслу оно похоже на объявление синонимов для уже объявленных имён:
0
|
|||||||
|
Неэпический
|
|
| 30.07.2018, 16:19 | |
|
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 30.07.2018, 17:11 | |
|
IGPIGP, правильнее будет "синтаксис С, совместимый с С++" и "синтаксис С++", а не "старый" и "новый".
0
|
|
|
4 / 2 / 0
Регистрация: 30.07.2018
Сообщений: 83
|
||
| 30.07.2018, 17:28 [ТС] | ||
|
TRam_, IGPIGP, DrOffset,
Понял. Но вот еще тогда вопрос возникает. Ведь это самое целое число весит 4 байта. Никак не меньше, потому что там должно помещаться столько. Ну по идее. И где тогда хранится информация о том, что это указатель? Ведь для этого нужна еще информация и занимать она будет никак не меньше 2-3 бит. Так, навскидку.
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||||||||
| 30.07.2018, 17:42 | ||||||||||||
Добавлено через 8 минут Вот если бы ты написал вот так:
0
|
||||||||||||
|
"C with Classes"
|
|||||||||||||||||||||
| 30.07.2018, 17:47 | |||||||||||||||||||||
|
чувак нормально объяснил.
В С, в отличие от С++, слово struct приходится постоянно использовать с именем типа -
Чтобы избежать этой проблемы, можно дописать
1
|
|||||||||||||||||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 30.07.2018, 17:48 | ||
|
0
|
||
|
4 / 2 / 0
Регистрация: 30.07.2018
Сообщений: 83
|
||||||
| 30.07.2018, 18:40 [ТС] | ||||||
|
TRam_,
Но читать и понимать буду позже. Меня и так уже трясет от количества информациии Добавлено через 6 минут Видите, вы говорите про случайные ошибки в грамматике, а я, тем временем, выделяю текст TRam_, как код С++. Как по Фрейду.
0
|
||||||
| 30.07.2018, 18:49 | |
|
0
|
|
|
Неэпический
|
|||
| 30.07.2018, 18:52 | |||
|
0
|
|||
| 30.07.2018, 18:52 | |
|
typedef struct + TXT
Волшебные вещи с typedef struct Программа через структуру typedef struct Typedef void F(); typedef для типа функции через идентификатор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|