реклама на сайте
подробности

 
 
> Мудрёная операция с указателями в IAR C, Компилятор ругается.
Д_М
сообщение Dec 20 2017, 19:02
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Приветствую!
Имеется структура и переменная - указатель, которая хранит адрес этой структуры.
Обращение к полям структуры через указатель Syst->SIO1.CRC;
Проверено, работает. Ничего удивительного. Решил в указатель загрузить адрес поля этой структуры
crc = &Syst->SIO1.CRC;
Компилятор ругается. Собственно, почему? Технически такое корректно. Меня в своё время очень удивило, что в качестве аргумента можно передавать адреса локальных переменных. Здесь ещё менее хитро, а компилятор ругается.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Dec 20 2017, 19:29
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Потому что у полей нет адресов.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 20 2017, 19:45
Сообщение #3


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(ViKo @ Dec 20 2017, 22:29) *
Потому что у полей нет адресов.


у декларации структуры - да. но есть смещение от начала структуры. и соответственно размер всей структуры.
а относительно указателя на данную структуру, есть адресс по факту (иначе, от противного, надо начинать верить в магию).

2копикастер
в подобных случая нужно
1) привести полностью код влияющий на ругань. т.е. все используемые типы и саму операцию, которую не пропускает компилятор.
Чтоб не париться - обычно делается так. Заводите болванку типа одной функции майн. и вставляете туда свою строчку которая с проблемой. копируете всё необходимое так-же.
проверяете компиляцию. зачастую на этом этапе вы сами с успехом найдёте свою ошибку в большинстве случаев. если проблема всё равно осталась и мысли закончились - только после этого постите
проблему на форум.
2) как уже прозвучало выше - надо привести оригинал ругани.

удачи вам
(круглый)

Цитата(Д_М @ Dec 20 2017, 22:35) *
...Error[Pe513]: a value of type "unsigned int volatile *" cannot be assigned to an entity of type "unsigned int *"


приведение типов.
тип с лева не равен типу с права. не нравится volatile .
т.е. компилятор видит с одной стороны вам пофигу на оптимизацию, а с другой обломс - вы явно указываете, что эту переменную нельзя оптимизировать.
ну или по другому - компилятор не имеет в своём стандартном наборе приведение одного к другому.

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

Сообщение отредактировал kolobok0 - Dec 20 2017, 19:51
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Д_М   Мудрёная операция с указателями в IAR C   Dec 20 2017, 19:02
- - Сергей Борщ   QUOTE (Д_М @ Dec 20 2017, 21:02) Компилят...   Dec 20 2017, 19:10
- - jcxz   Цитата(Д_М @ Dec 20 2017, 21:02) Компилят...   Dec 20 2017, 19:18
- - Д_М   Объявления unsigned int *crc; syspar Sys; // Декл...   Dec 20 2017, 19:35
|- - jcxz   Цитата(Д_М @ Dec 20 2017, 21:35) Error[Pe...   Dec 20 2017, 20:06
- - Д_М   extern unsigned int CRC(char data, unsigned int cr...   Dec 21 2017, 10:18
|- - Сергей Борщ   QUOTE (Д_М @ Dec 21 2017, 12:18) // Ругае...   Dec 21 2017, 12:42
- - aiwa   Вы умолчали, что компилятор ругается на Цитатаdat...   Dec 21 2017, 13:09
|- - jcxz   Цитата(aiwa @ Dec 21 2017, 15:09) Если S...   Dec 21 2017, 13:56
- - x893   Видимо лень читать гугло-поиск или на крайний случ...   Dec 21 2017, 13:58
|- - jcxz   Цитата(x893 @ Dec 21 2017, 15:58) Видимо ...   Dec 21 2017, 14:04
- - aiwa   Цитата(jcxz @ Dec 21 2017, 15:56) Нет. Оп...   Dec 21 2017, 15:14
|- - jcxz   Цитата(aiwa @ Dec 21 2017, 17:14) В смысл...   Dec 21 2017, 17:04
- - aiwa   Цитата(jcxz @ Dec 21 2017, 19:04) А Вы пы...   Dec 21 2017, 17:24
|- - jcxz   Цитата(aiwa @ Dec 21 2017, 19:24) Хотя мо...   Dec 21 2017, 17:46
|- - Сергей Борщ   QUOTE (jcxz @ Dec 21 2017, 19:46) Здесь т...   Dec 21 2017, 17:50
|- - jcxz   Цитата(Сергей Борщ @ Dec 21 2017, 19:50) ...   Dec 21 2017, 17:55
- - Д_М   Когда делаю вот так Syst->SIO1.CRC = CRC(*Syst-...   Dec 21 2017, 20:30
|- - Сергей Борщ   QUOTE (Д_М @ Dec 21 2017, 22:30) когда в ...   Dec 21 2017, 20:32
|- - jcxz   Цитата(Сергей Борщ @ Dec 21 2017, 22:32) ...   Dec 22 2017, 10:34
- - Д_М   Большое спасибо за помощь!   Dec 22 2017, 07:56


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016