Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
4 / 2 / 0
Регистрация: 30.07.2018
Сообщений: 83

Typedef struct

30.07.2018, 10:56. Показов 4708. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане.
С недавних пор пытаюсь научиться работать с микроконтроллерами. Параллельно изучаю С\С++.
Так вот у меня состояние грога с таким вот кодом.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define ITM                 ((ITM_Type       *)     ITM_BASE      ) <----  вот эта строка особенно бесит!! Что здесь происходит?
#define ITM_BASE            (0xE0000000UL)
 
 
typedef struct
{
  __OM  union
  {
    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */
    ..........
    
  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */
  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */
  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */
  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */
  ..........
  
} ITM_Type; <----------в define тоже эта запись....
как это все понимать? вверху.





C++
1
2
3
4
5
6
__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
{
  Здесь еще какой-то код,он мне не интересен
    ITM->PORT[0U].u8 = (uint8_t)ch;  <-----  что это такое? Куда указатель? Почему указатель? 
    
  }

Попытка отработать такой же код с другими именами в Code Blocks работает только как набрано.
Если пытаюсь изменить всю запись, но в соответсвии со своим пониманием процессов -- ничего не получается.
Разъясните пожалуйста.

Добавлено через 39 минут
Спасибо за редактирование.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2018, 10:56
Ответы с готовыми решениями:

typedef struct
а зачем вы используете конструкцию typedef struct name{...} ? и какие она дает преимущества в отличии от struct name{...}

typedef struct
Ребята, нужна помощь. Первый раз использую typedef struct. Вроде бы всё работает, но хочу удостовериться по причине: это мой уже 2-ой...

typedef struct ....
Здравствуейте. Обьясните пожалуйсто новичку что означает этот код. typedef struct { long num_servers; long data_size; char*...

50
30.07.2018, 18:54
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
даже специально выделил жирным шрифтом
у меня аналогично было при слепом наборе текста - буквы путались или пропускались

0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
30.07.2018, 18:57
Цитата Сообщение от IGPIGP Посмотреть сообщение
Я привожу аргументы. Вы этого не делаете.
Там уже товарищ TheCalligrapher всё прекрасно описал.

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
Причем, систематически.
Если честно, то с Вами просто бесполезно спорить, Вам что аргументы, что ахинея - всё одно и ни о чем.
У Вас какая-то своя философия, из-за которой любое обсуждение чего-то с Вами превращается в свалку.
Но это так, чисто моё мнение. :)

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
30.07.2018, 19:08
Цитата Сообщение от TRam_ Посмотреть сообщение
IGPIGP, правильнее будет "синтаксис С, совместимый с С++" и "синтаксис С++", а не "старый" и "новый".
Я думаю, это вопрос мнений. Если бы тут был С/С++ раздел, - другое дело. Но сейчас уже трудно найти кого-то кто не согласен с тем, что это два разных языка. Объявления структур тегом уже давно не нужны даже для локальных объявлений функторов. Лямбда-функции значительно мощнее синтаксически и в плане возможности легко и тонко выражать замыкание. Всё остальное делается новым синтаксисом в С++ (imho). А мощные и высокомерные высказывания... Ну кто же без греха? Я отношусь к ним терпимо, если они не касаются меня лично или выражают частное мнение, которое не стоит войны до последней капли здравого смысла.
Цитата Сообщение от Croessmah Посмотреть сообщение
Жесть. Так я уже давно не ошибался надо было

Дык, пишу в спешке. А читать могу только уже готовый пост. Настройка фона в окне редактирования не держится. В общем, ошибки есть. А ещё хуже, - куча постов редактирования. Грешен.
А я уж думал речь идет о typedef (using кстати его уже закопал и в С++ и разговор о старом и новом, мог бы быть ещё шире).
Croessmah, тогда я погорячился и прошу прощения.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
30.07.2018, 19:12
Цитата Сообщение от IGPIGP Посмотреть сообщение
А я уж думал речь идет о typedef (using кстати его уже закопал и в С++ и разговор о старом и новом, мог бы быть ещё шире).
Есть куча кода, где не используется C++11, также есть куча кода, который потом используется и в C, так что typedef никуда не делся.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
30.07.2018, 19:23
Croessmah,
Цитата Сообщение от Croessmah Посмотреть сообщение
Есть куча кода, где не используется C++11, также есть куча кода, который потом используется и в C, так что typedef никуда не делся.
А кто говорил иное? Я сказал, что
объявление в стиле С структур с typedef + structure tag - устарело в С++.
И не вижу, что тут такого крамольного, чтобы в теме, которая касается этого (исторического) вопроса очень мало развозить такой спор. Причём вконце, когда TC уже всё ясно и вся работа сделана.
То что данный синаксис оставлен для совместимости ведь прозвучало, о чём речь? И есть кучи кода. Что да то да.

Не по теме:

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

0
4 / 2 / 0
Регистрация: 30.07.2018
Сообщений: 83
30.07.2018, 21:28  [ТС]
Что значат все эти слова??
структур тегом
Лямбда-функции
выражать замыкание
ечь идет о typedef (using кстати его уже закоп
для локальных объявлений функторов.

Что вы хотите от меня??? Я вас не понимаю!!! Оставьте меня в покое!!!!!!!!
Где моё успокоительное........
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
30.07.2018, 21:44
Predator79, Вам понятно то, что касается Вашего вопроса? Если да, то не обращайте внимания на нас. Старики любят полялякать.
А если что осталось не понятно, спрашивайте.
0
4 / 2 / 0
Регистрация: 30.07.2018
Сообщений: 83
30.07.2018, 21:57  [ТС]
Croessmah,
Масса всякого непонятного
Да я и сам не молод.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.07.2018, 00:05
Цитата Сообщение от Predator79 Посмотреть сообщение
Что значат все эти слова??
структур тегом
Нет друго способа объявить структуру локально. Я Вам показал как это делается в коде. Вы смотрели? Компилировали? Если нет, то что я могу сделать?
А когда Вы поймёте локальное объявление структуры, то сообразите, что можно определив оператор () получить локальное объявление функционального объекта.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//в какой-то локальной области, например в main
int x(123), y(234);
 
typedef struct FunctorStruct
{
int operator()(int &x_, int y_)
{
    return ++x_+y_;
}
};
 
FunctorStruct functorStruct;
for(int i=0; i<5; ++i)
{
 int z = functorStruct(x,y);
 cout << x << ' ' <<  y << ' ' << z <<endl;
}
0
4 / 2 / 0
Регистрация: 30.07.2018
Сообщений: 83
31.07.2018, 06:53  [ТС]
IGPIGP,
Да ладно, это была шутка...
Меня больше напрягло выражение "выражать замыкание".
С этим я еще не общался. Все остальное с грехом пополам учил.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.07.2018, 14:31
Цитата Сообщение от Predator79 Посмотреть сообщение
Меня больше напрягло выражение "выражать замыкание".
Выражать это осмысленно писать или говорить. Что касается замыкания, то у функторов с этим всё плохо. Видимость внутри класса не позволяет производить захват непосредственно так, как это обеспечивает синтаксис лямбда-функций. Вот и всё, что я имел ввиду.
Это были размышление ко всем кому интересно. Для Вас уже было всё сказано в самом начале. Уж не знаю почему читать Вы стали с конца.
А синтаксис объявленя это то что нужно повторить. Синтаксис начинающийся со слова struct/class , позволяет между последней скобкой и точкой с запятой (видя Вашу способность непонимать - повторю - между фиг. скобкой и тсз, то есть не между точкой и запятой) имена объявляемых экземпляров в виде списка разделённого запятыми. А тот что с typedef - в этом же месте объявляет только одно имя - имя самого типа. Это набегу путают и те кто знает. Остальное - сведения из истории с попыткой объяснить логику.
И да. То что я написал между скобками про между точкой и запятой, тоже шутка. Ответный ход.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2018, 14:31

typedef struct + TXT
Такое вот задание.. есть TXT файл, пропарсить смогу сам, а дальше не знаю что делать, допустим, считали данные : Строка :...

Для чего typedef struct
Часто в &quot;профессиональном&quot; коде вижу - typedef struct MyStruct { // ... } MyStuct; даёт ли это какие то преимущества перед...

Волшебные вещи с typedef struct
у меня сейчас мозг взорвется не пойму в чем ошибка,где я не так делаю? #include &lt;stdio.h&gt; #include &lt;locale.h&gt; #include...

Программа через структуру typedef struct
Люди помогите если несложно с программой, задание таково: 1.С клавиатуры вводятся пункты структуры - Студент: Матрикул - номер...

Typedef void F(); typedef для типа функции через идентификатор
Здравствуйте цитата из typedef MSDN в интернете мне удалось нарыть только один конкретный пример: class A { typedef void F(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу
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
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru