|
|
  |
структуры в С, копирование в байтовый массив |
|
|
|
Apr 29 2007, 18:02
|

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

|
Ладно, я еще поприкалываюсь Цитата(lks @ Apr 29 2007, 14:49)  Могут, могут. А память где для них брать? Там же, где вы собираетесь брать ее для байтового массива. Или вы думаете, что байтовый массив занимает меньше места чем структура такого же размера? Цитата(lks @ Apr 29 2007, 14:49)  Чтобы загрузить структуру предлагаете memcpy, а место в памяти пргограмм где взять? "Есть у нас студент, фамилия у него Горидзе, зовут его Авас, а доцент тупой". Переведите термин "загрузить структуру". zltigo предлагает использовать memcpy для КОПИРОВАНИЯ СОДЕРЖИМОГО СТРУКТУРЫ В БАЙТОВЫЙ МАССИВ, что собственно и спрашивалось в первом вопросе. Цитата(lks @ Apr 29 2007, 14:49)  Меня этот путь не устраивает. Я месяца полтора назад в Keil-е все это уже попробовал. Структура у меня заполняется данными замечательно из буфера по указателю, но только когда я указывал на переменную внутри структуры. Это понятно? Если вы не умеете что-либо делать, то это не значит что это сделать невозможно и не нужно. Цитата(lks @ Apr 29 2007, 14:49)  Пример: struct S{...}s; struct S* ps; ps=&s; не работатет, хотя должен. Работает, как и должен. Код 47 struct S{ 48 uint8_t i;
\ In segment NEAR_Z, align 1, keep-with-next \ 00000000 REQUIRE `?<Segment init: NEAR_Z>` 49 }s; 50 struct S* ps; \ ps: \ 00000000 DS 2 \ s: \ 00000002 DS 1
\ In segment CODE, align 2, keep-with-next 51 void Test() \ ??Test: 52 { 53 ps = &s; \ 00000000 .... LDI R16, LOW((ps + 2)) \ 00000002 .... LDI R17, (ps + 2) >> 8 \ 00000004 .... LDI R30, LOW(ps) \ 00000006 .... LDI R31, (ps) >> 8 \ 00000008 8300 ST Z, R16 \ 0000000A 8311 STD Z+1, R17 54 ps->i = 2; \ 0000000C E002 LDI R16, 2 \ 0000000E 8302 STD Z+2, R16 55 } \ 00000010 9508 RET Цитата(lks @ Apr 29 2007, 14:49)  Я действительно программы пишу много и давно, только я не преподаватель информатики, я реальные вещи делаю, на реальном "железе". Общетеоретические иссенуации меня не интересуют. Прекрасно. Продолжайте вещи делать, только не лезьте теоретизировать о вещах, в которых понятия не имеете. Это уже не первое обсуждение, где вам указывают на ваше невежество.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 29 2007, 19:24
|
Местный
  
Группа: Новичок
Сообщений: 493
Регистрация: 18-06-06
Пользователь №: 18 143

|
Цитата(Сергей Борщ @ Apr 29 2007, 19:02)  Ладно, я еще поприкалываюсь В чем прикол то? Что тоже педагог? Откуда вас тут столько набежало? Педагоги-теоретики достали своей тупостью! Цитата(Сергей Борщ @ Apr 29 2007, 19:02)  Продолжайте вещи делать, только не лезьте теоретизировать о вещах, в которых понятия не имеете. Это уже не первое обсуждение, где вам указывают на ваше невежество. Мне постоянно пытаются разные умники (вроде вас) указывать на что нибудь! Тут скопляется ужастное количество лингвистов всех мастей - понятия не имеющих о реальных вещах. А еще других пытаются учить. Найдут какой-нибудь учебник - мусолят его, мусолят... А потом умное лицо начинают делать.. Других людей жизни учить... Спросишь по теме что-нибудь - одни вопли в ответ - типа: "почему не по учебнику спросил". Учебник я и сам могу прочитать. По вопросу того индикатора ЖКИ (которым вы меня попрекаете) - мне влом было искать тогда для вас этот ДШ. Вам он всеравно не нужен был. Одна болтовня потому-что.
|
|
|
|
|
Apr 29 2007, 20:01
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(lks @ Apr 29 2007, 19:46)  Да нет, "блеск" был это когда вы предложили из буфера в структуру копировать данные с ипользованием библиотечной процедуры. Так, с явными преобразованием типов указателей в языке 'C' покончили - туды их в качель. Ну ниасилил  соболезную. Переходим к "практической" критике clib. Чем библиотечные функции ("процедуры" в переводе  ) не угодили? А memcpy() конкретно чем? Глючит? Тормозит? А, наверное вообще не работает! Угадал?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 29 2007, 21:03
|

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

|
Цитата(lks @ Apr 29 2007, 19:24)  В чем прикол то? В том, как вы с пеной у рта несете чушь Цитата(lks @ Apr 29 2007, 19:24)  А еще других пытаются учить. На ваших советах действительно можно учиться - как не надо делать. Продолжайте. Цитата(lks @ Apr 29 2007, 19:24)  Учебник я и сам могу прочитать. А что же до сих пор не прочитали?  Или знакомых букв в нем мало?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 29 2007, 21:31
|
Местный
  
Группа: Новичок
Сообщений: 493
Регистрация: 18-06-06
Пользователь №: 18 143

|
Цитата(Сергей Борщ @ Apr 29 2007, 22:03)  В том, как вы с пеной у рта несете чушь  На ваших советах действительно можно учиться - как не надо делать. Продолжайте.А что же до сих пор не прочитали?  Или знакомых букв в нем мало? У моего знакомого, по месту работы - есть охранник, у него на столе стоит комп, а раньше он похоже окончил курсы "оператор ПЭВМ". С этого компа шарит по форумам - поднаторел в терминологии, если что не знает спросит в другом форуме или книжку почитает (наверное кто-то забыл в столе). Короче пишет много, авторитетом пользуюется немалым у молодежи - повышает свою "ущемленную" самооценку до уровня - действующего членкора РАН. Крутой перец - одним словом. (жалко работатет только - два через день).
|
|
|
|
|
Apr 29 2007, 21:50
|
Местный
  
Группа: Новичок
Сообщений: 493
Регистрация: 18-06-06
Пользователь №: 18 143

|
Цитата(zltigo @ Apr 29 2007, 22:41)  За язык "C" заступились. Круто сказано. А что вы еще умеете?
|
|
|
|
|
Apr 29 2007, 22:36
|

инопланетянин
  
Группа: Свой
Сообщений: 236
Регистрация: 24-12-06
Из: Питер
Пользователь №: 23 832

|
Уважаемые собеседники! Не составит ли вам большого труда вкратце еще раз описать проблему (если таковая имеется) и предложить каждой из сторон варианты ее решения! Что можно делать, что нельзя. Кратко в одном сообщении и без перехода на личности. Поймите меня правильно, я не ограничеваю (типа не модератор, поэтому на то права не имею) дискуссию. Мне бы просто хотелось посмотреть на проблему вцелом (если она конечно есть  ) и не сталкнуться с ней самому (как-нибудь)  А то я чего-то ваще не понимаю mainstreama из всего количества сказанного! Всё, спасибо. Больше не встреваю
|
|
|
|
|
Apr 29 2007, 22:56
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Legotron @ Apr 29 2007, 22:36)  еще раз описать проблему (если таковая имеется) В том-то и "проблема", что проблемы нет. Есть с тупым упорством непонимание (элементарнейших  ) языковых конструкций. Возникшее, как я понимаю, на почве "практического" знания что есть "его величество байт" и уверенности, что все остальное от лукавого. Когда из какой-то книжки и и чужих исходников вылезло чуждое понятие структуры, то ее эмпирическим ("практическим", как любит lks) путем начал насиловать путем выдергивания из всяких текстов кусков и вставления их куда попало. Изнасиловав , возгордился и решил отрекламировать "достижение". С этого и началось. На все надуманные "проблемы" давались ответы, некоторые коллеги пытались и подробно объяснять, но не воспринимались никоим образом. Если вдруг Вы сможете найти в постах lks что-то, на что не был дан ответ, или он был неправильным, или непонятным лично Вам, будте добры, повторите этот вопрос. Обязательно отвечу.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 30 2007, 03:24
|
Участник

Группа: Новичок
Сообщений: 29
Регистрация: 16-03-07
Из: МО, г.Балашиха
Пользователь №: 26 210

|
rezident >> У вас есть адрес Доктора ТуамОсеса??? Оба-на! Это интересно Нет, не знаком. Я говорю, о реальной фирме, делающей реальную работу. Мифические персонажи оставьте телесиськам, пусть там резвятся вволю, коли заняться нечем
|
|
|
|
|
Apr 30 2007, 04:28
|
Участник

Группа: Новичок
Сообщений: 29
Регистрация: 16-03-07
Из: МО, г.Балашиха
Пользователь №: 26 210

|
Может и не в кассу, имхо вот в этой короткой фразе нашего заблуждающегося коллеги кроется смысл проблемы: "Ну тогда обясните почему я всегда могу получить адресс массива через амперсанд не зависимо от типа данных, а от структуры не получается."
Адрес с помощью "операции амперсанд" ПОЛУЧИТЬ можно у любой конструкции языка, а вот ПРИСВОИТЬ любому указателю, хоть он и указывает на такую же длину данных, нельзя. Компилер ругается не на ВЗЯТИЕ, а на ПРИСВОЕНИЕ.
В принципе, это распространённая ошибка ассемблерного прошлого (сужу по себе), т.е. когда человек начинал программить на асме и делал это довольно долго. Поэтому он недоумевает, раз по моей задумке данные по числу байт совпадают, то почему ими нельзя свободно манипулировать? Но С-компилер этого не знает и ругается.
Хотя, это никому уже не интересно. Пошло стандартное кидание какашками. Жалко.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|