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

 
 
> Указатель на структуру, правильно-ли?
otrog
сообщение Jul 7 2006, 11:52
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Здравствуйте.
Подскажите пожалуйста допустимо-ли так делать на C(CodeVision)?
Объявлена структура:
Код
struct TParameters
{
  unsigned int ADC_Value;
  unsigned int temperature[2];
  unsigned long suit;

  unsigned int CRC16;
};                  

struct TParameters Parameters;

В main-е есть вот что:
Код
// передача данных в комп
ptr = &Parameters;
Parameters.CRC16 = CRC16(ptr, sizeof(Parameters) - 2);
for (i=0;i<sizeof(Parameters);i++) { USART_Transmit(*ptr++); } // передать результаты измерений в УАРТ

Интересует применимость работы со структурами через указатели.

И еще CodeVision выдает warning"(358): suspicious pointer conversion" на строку "ptr = &Parameters;".
Что это может означать?
Спасибо.


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beer_warrior
сообщение Jul 7 2006, 12:42
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
И всеже при обращении к структуре через указатель не будет-ли нарушаться порядок передачи байтов?

Нет не будет. Но надо учитывать, что при разнотипных данных, они могут быть выровнены по длине наибольшего. Т.е. если между двумя int16 затешеться int8 компилятор дополнит его до 16 бит нулями.
Обычно это некритично, но при обмене по последовательному каналу может неожиданно измениться длина посылки и смещение от начала. Следите за настройками компилятора.


И вопрос от себя:
Кто бы напомнил финт - читаю из внешней EEPROM, задавая адрес начала чтения. Хотелось бы описать содержимое EEPROM структурой и получать адрес чтения (смещение) из ее объявления.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
unichorn
сообщение Jul 7 2006, 12:54
Сообщение #3


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

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



Цитата(beer_warrior @ Jul 7 2006, 16:42) *
И вопрос от себя:
Кто бы напомнил финт - читаю из внешней EEPROM, задавая адрес начала чтения. Хотелось бы описать содержимое EEPROM структурой и получать адрес чтения (смещение) из ее объявления.


Насчёт такого финта незнаю blink.gif , для этих целей я использую макросы.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- otrog   Указатель на структуру   Jul 7 2006, 11:52
- - _Bill   Цитата(otrog @ Jul 7 2006, 14:52) Здравст...   Jul 7 2006, 11:59
|- - otrog   Цитата(_Bill @ Jul 7 2006, 15:59) Нет, не...   Jul 7 2006, 12:04
|- - IgorKossak   Цитата(beer_warrior @ Jul 7 2006, 15:42) ...   Jul 7 2006, 12:51
- - GetSmart   Я не очень понял, что надо beer_warrior, но может ...   Jul 7 2006, 13:08
- - beer_warrior   ЦитатаТолько не с AVR. Это семейство 8-битное и вы...   Jul 7 2006, 15:11
- - GetSmart   Ничё не знаю. Я прямо так и пишу в ИАРе под АРМ. ...   Jul 7 2006, 15:14
- - beer_warrior   Именно то спасибо. А скобки... Это же весьма навор...   Jul 7 2006, 15:34
- - GetSmart   А вот и нет. Не внешние скобки. А сразу за внешним...   Jul 7 2006, 15:40
- - defunct   ЦитатаТока не пойму зачем там лишняя пара скобок? ...   Jul 9 2006, 22:24
- - otrog   Спасибо всем ответившим. Но сомнения остались: Цит...   Jul 11 2006, 06:31
|- - Сергей Борщ   Цитата(otrog @ Jul 11 2006, 09:31) Кстати...   Jul 11 2006, 08:57
- - unichorn   Неиспользовать для этих целей тип int и unsigned i...   Jul 11 2006, 07:04
- - vet   Прочитать хелп по #pragma pack и использовать любы...   Jul 11 2006, 07:07
- - beer_warrior   Можно прагмой, в gcc для этих целей есть атрибут. ...   Jul 11 2006, 07:25


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

 


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


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