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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Мудрёная операция с указателями в IAR C, Компилятор ругается.
aiwa
сообщение Dec 21 2017, 17:24
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(jcxz @ Dec 21 2017, 19:04) *
А Вы пытаетесь придумать "Что бы там такое другое могло быть?".

Имхо, в этом и вся суть темы.

Цитата(jcxz @ Dec 21 2017, 19:04) *
А Вы обратите внимание что и при инициализации data и при вызове функции выражение-то одно и то же "*Syst->SIO1.ptr".
Если бы ругалось на него, то в обоих случаях должно. А значит - видимо с ним всё нормально.


Именно об этом я и говорю. Не хватает ругани: должно быть как минимум две.
Хотя можно предположить, что во втором случае в "SIO1" затесалась "О" кириллицей.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 21 2017, 17:46
Сообщение #17


Гуру
******

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



Цитата(aiwa @ Dec 21 2017, 19:24) *
Хотя можно предположить, что во втором случае в "SIO1" затесалась "О" кириллицей.

Там можно что угодно предположить так как это игра в угадайку.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 21 2017, 17:50
Сообщение #18


Гуру
******

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



QUOTE (jcxz @ Dec 21 2017, 19:46) *
Здесь телепаты нужны. laughing.gif
Не ссорьтесь. Там в вызове функции есть два обращения к volatile-переменным. Телепатирую, что компилятор справедливо выдает предупреждение о неопределенном порядке доступа к этим переменным. Но автор темы почему-то стесняется привести нам текст этого предупреждения.


--------------------
На любой вопрос даю любой ответ
"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 21 2017, 17:55
Сообщение #19


Гуру
******

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



Цитата(Сергей Борщ @ Dec 21 2017, 19:50) *
Там в вызове функции есть два обращения к volatile-переменным. Телепатирую, что компилятор справедливо выдает предупреждение о неопределенном порядке доступа к этим переменным.

Да, так скорее всего и есть. Чуть позже это заметил. sm.gif
Go to the top of the page
 
+Quote Post
Д_М
сообщение Dec 21 2017, 20:30
Сообщение #20


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

Группа: Участник
Сообщений: 119
Регистрация: 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
Сообщение #21


Гуру
******

Группа: Модераторы
Сообщений: 8 191
Регистрация: 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
Д_М
сообщение Dec 22 2017, 07:56
Сообщение #22


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

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



Большое спасибо за помощь!
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 22 2017, 10:34
Сообщение #23


Гуру
******

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



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

Может у ТС доступ write-only на форум? cool.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th February 2018 - 00:43
Рейтинг@Mail.ru


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