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

 
 
> Мудрёная операция с указателями в 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
Ответов
Д_М
сообщение Dec 21 2017, 20:30
Сообщение #2


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

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



Когда делаю вот так
Syst->SIO1.CRC = CRC(*Syst->SIO1.ptr, Syst->SIO1.CRC, SIO1_poly);

Компилятор выдаёт следующее предупреждение:
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement D:\Work\MC\Gateway\Actual\Modbus_master1.c 170

И ещё выдаёт такое же предупреждение, когда делаю так
if(Syst->SIO1.size < Syst->SIO1.amount)
{
}

Не любит компилятор, когда в одной команде дважды фигурирует обращение к структуре, через указатель.

Кажется распутал.
Причина оказалась в том, что указатель размещается в строго определённом физическом адресе.
__no_init volatile syspar *Syst @0x0100;
Так нужно для совместного обращения из applycation и boot секторов.

Если сделать просто syspar *Syst;
То никакой ругани нет.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 21 2017, 20:32
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Д_М @ Dec 21 2017, 22:30) *
когда в одной команде дважды фигурирует обращение к структуре, через указатель.
Ну раз вы не хотите читать не только сообщения компилятора, но и то, что вам отвечают на форуме - пусть будет так. Пусть он не любит через указатель. Смиритесь.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 22 2017, 10:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Сергей Борщ @ Dec 21 2017, 22:32) *
Ну раз вы не хотите читать не только сообщения компилятора, но и то, что вам отвечают на форуме - пусть будет так. Пусть он не любит через указатель. Смиритесь.

Может у ТС доступ write-only на форум? cool.gif
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
- - ViKo   Потому что у полей нет адресов.   Dec 20 2017, 19:29
|- - kolobok0   Цитата(ViKo @ Dec 20 2017, 22:29) Потому ...   Dec 20 2017, 19:45
- - Д_М   Объявления 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
- - Д_М   Большое спасибо за помощь!   Dec 22 2017, 07:56


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:25
Рейтинг@Mail.ru


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