Как в С преобразовать структуру в массив?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
viakon
02 сентября 2004 г. 08:54
Составить ответ
|||
Конференция
|||
Архив
Ответы
Ответ: Как в С преобразовать структуру в массив?
—
fk0
(02.09.2004 14:03, 27 байт)
Сделайте через union. В чем проблема?
—
El
(02.09.2004 12:14,
пустое
)
Господа! Раз пошла такая пьянка и работать не охота... чет про goto давно не спорили...
—
F8
(02.09.2004 10:17,
пустое
)
о! давайте про goto. Практический пример
—
bialix
(02.09.2004 12:39, 1209 байт)
Ответ: о! давайте про goto. Практический пример
—
fk0
(02.09.2004 14:10, 792 байт)
вопрос поставлен верно. и не надо сюда примешивать longjmp. никаких функций в моем примере нет
—
bialix
(02.09.2004 14:23, 255 байт)
А я бы так никогда не сделал. "Уж сколько раз твердили Миру..да все не впрок..." что goto - это опастно.!
—
Весельчак_У
(02.09.2004 14:47,
пустое
,
картинка
)
Ответ: обычное дело - как 2 пальца..
—
-Tумблер-
(02.09.2004 14:08, 146 байт)
Да далеко ходить за goto не надо - возьмите (+)
—
SM
(02.09.2004 13:00, 247 байт)
извиняюсь. еще раз код. форматирование забыл
—
bialix
(02.09.2004 12:42, 245 байт)
А вот так? наприме...
—
lamerok
(02.09.2004 09:30, 633 байт)
Кстати, использование символов подчеривания в начале имен крайне не рекомендуется. Так же как и использование двух таких симвовлов подряд в именах. :)))))))
—
dxp
(02.09.2004 11:09,
пустое
)
А никто перед именами и не успользовал...Там _hopc_SFileStructure - очепятка(реально без_)
—
lamerok
(02.09.2004 14:29,
пустое
)
Я понял. Просто эта очепятка напомнила этот момент. Я уже и забыл, какой он флеймоопасный. :)
—
dxp
(02.09.2004 14:36,
пустое
)
чушь
—
bialix
(02.09.2004 12:46,
пустое
)
Откройте Стандарт и почитайте. Тогда увидите, кто тут чушь несет! Подскажу, на всяк случай
—
dxp
(02.09.2004 13:04, 212 байт)
кстати, где нибудь эти стандарты лежат в общественно-доступном месте?
—
bialix
(02.09.2004 13:11,
пустое
)
===>
—
SM
(02.09.2004 13:18,
пустое
,
ссылка
)
свою позицию я высказал очень четко (см.ссылку). даже если стандарт имеет наглость такое говорить - это лишь подтверждает мое мнение в уродстве языка
—
bialix
(02.09.2004 13:08,
пустое
,
ссылка
)
Ага, подписываюсь. Тем более что даже часть библиотечных стандартных ф-ций имеет подчеркивание впереди. И intrinsic'и тоже.
—
SM
(02.09.2004 12:48,
пустое
)
Посмотрите пункты, которые я дал соседнем сообщении.
—
dxp
(02.09.2004 13:07, 115 байт)
Так я и пишу очень много именно (+)
—
SM
(02.09.2004 13:10, 205 байт)
Ответ: допустим. А почему не ashrs_() или даже ashrs__()?
—
Весельчак_У
(02.09.2004 15:05,
пустое
,
картинка
)
А чтобы была общность с названиями остальных аналогичных RTL и intrinsic функций.
—
SM
(02.09.2004 15:33,
пустое
)
Нет, там имеется в виду не файлы с расширением lib, а стандартная библиотека, которая входит в имплементацию. То,
—
dxp
(02.09.2004 13:20, 640 байт)
Да как это не относится - еще как относится. Я же пишу именно расширение компилятора (+)
—
SM
(02.09.2004 13:39, 752 байт)
Вот если Вы разрабатываете библиотеку, которую включат в состав
—
dxp
(02.09.2004 14:17, 652 байт)
Я эту библиотеку делаю (+)
—
SM
(02.09.2004 14:21, 325 байт)
Ну, в этом случае, наверное, иначе и не сделаешь -
—
dxp
(02.09.2004 14:33, 110 байт)
Почти поняли :) Насчет имен (+)
—
SM
(02.09.2004 14:50, 106 байт)
настоящие джедаи так не поступают
—
bialix
(02.09.2004 13:31,
пустое
)
подозреваю, что следующим аргументом против будут как раз Ваши же слова
—
bialix
(02.09.2004 12:53, 185 байт)
Это еще где написано? Ни разу не слышал, и в ANSI не видел. Очень часто это использую для (+)
—
SM
(02.09.2004 12:40, 107 байт)
А у Вас тут все в порядке. Я говорил про
—
dxp
(02.09.2004 12:52, 437 байт)
вобщем с этим си все понятно - в нем сплошь и рядом торчат врожденные уродства и ошибки в ДНК. убогий язык
—
bialix
(02.09.2004 12:55,
пустое
)
Во народ пошел ! Чиво не дай - все мало. То суп жидкий, то алмазы мелкие..
—
Весельчак_У
(02.09.2004 14:19,
пустое
,
картинка
)
Кстати очень часто приходится (+)
—
SM
(02.09.2004 12:55, 221 байт)
а я предпочитаю называть с подчеркивания функции используемые только внутри модуля и никуда наружу не выходящие. сразу видно
—
bialix
(02.09.2004 12:57,
пустое
)
Один дяденька предпочитал переходить улицу в неположенном месте (считал, что он лучше знает правила и плевал на те, которые установлены). На прошой неделе его-таки перехала машина.
—
dxp
(02.09.2004 13:12,
пустое
)
Не беда !
—
Весельчак_У
(02.09.2004 14:11,
пустое
,
картинка
)
бедненький дяденька!
—
bialix
(02.09.2004 13:13,
пустое
)
А я их предпочитаю "static" делать - их тогда в принципе за пределами не видно :))
—
SM
(02.09.2004 13:01,
пустое
)
да. и это тоже. но для меня подчеркивание - это как подсказка самому себе
—
bialix
(02.09.2004 13:05,
пустое
)
А вообще, интересно, откуда такой вопрос возник?
—
Bill
(02.09.2004 09:13,
пустое
)
SM правильно прочувствоал проблему
—
viakon
(02.09.2004 10:50,
пустое
,
ссылка
)
Тогда и вопрос надо ставить соответсвующим образом.
—
Bill
(02.09.2004 11:14,
пустое
)
Например так
—
F8
(02.09.2004 09:11, 294 байт)
На MSP430, например, это работать не будет! :-Р
—
dxp
(02.09.2004 09:16,
пустое
)
Через почему?
—
F8
(02.09.2004 09:18,
пустое
)
Через потому, что sizeof(ваша структура) == 8.
—
dxp
(02.09.2004 09:25,
пустое
)
Ну напишите не 7 а 8. 90% приложений пишутся для конкретной платформы, на ней же и умирают. А если хотите чтоб ваше приложение было мультикомпиляторноплатформенным и при этом эффективным используйте условную компиляцию.
—
F8
(02.09.2004 09:45,
пустое
)
Конечно, я так и напишу, когда припрет. Но
—
dxp
(02.09.2004 09:56, 721 байт)
Отчасти Вы павы только точка зрения зависит от угла смотрения(+)
—
F8
(02.09.2004 10:09, 261 байт)
На счет эффективности - не факт
—
smav
(02.09.2004 11:55, 609 байт)
Согласен насчет эффективности.
—
dxp
(02.09.2004 10:29, 918 байт)
Это тока в данном случае, если структруа будет сложнее, то вообще ерунда будет, ..Уже пробывал..
—
lamerok
(02.09.2004 09:51, 55 байт)
Ага :)(+)
—
F8
(02.09.2004 09:57, 120 байт)
Это потому-что надо выравнивание сделать типа #pragma pack(push, 1)
—
lamerok
(02.09.2004 09:35,
пустое
)
Это когда вы уже нашли ошибку. А когда она
—
dxp
(02.09.2004 09:41, 627 байт)
Ответ: Нужно просто об этом знать и все. (+)
—
димка
(02.09.2004 09:51, 93 байт)
Не надо на всех моих компилятор есть... чтона ИАРе, что на Borlande, что на VC..
—
lamerok
(02.09.2004 09:47, 397 байт)
#pragma - это расширение конкретной платформы. Стандарт
—
dxp
(02.09.2004 10:08, 1156 байт)
В этом согласено, но....
—
lamerok
(02.09.2004 10:30, 699 байт)
Я бы тут не так делал.
—
dxp
(02.09.2004 10:40, 211 байт)
Дак в том то и дело, что вы не знаете структуры принимаемого объекта...
—
lamerok
(02.09.2004 10:53, 720 байт)
Как это не знаю? Если совсем не знаю, то задача вообще не решается. А если
—
dxp
(02.09.2004 11:05, 959 байт)
:-))) Не ну это просто смешно, так ведь придется делать для всех структур -)) когда моно не парится, и применить прагму...
—
lamerok
(02.09.2004 11:40, 310 байт)
Только во MSP430 будет не смешно и придется ему попариться, разгребая упакованные половинки... Кому что важнее.
—
dxp
(02.09.2004 11:57, 157 байт)
На крайнфк можно сделать #pragma pack(push,2) ...тогда ему не надо парится
—
lamerok
(02.09.2004 14:23,
пустое
)
Вдогонку.
—
dxp
(02.09.2004 12:04, 410 байт)
Потому что, нелбзя испольщовать один заголовочный файл для МСП и Билдера!!! Получатеся не универсально!!!
—
lamerok
(02.09.2004 14:21,
пустое
)
Да почему ж нельзя-то?
—
dxp
(02.09.2004 14:30, 170 байт)
Например,(+)
—
Вяч
(02.09.2004 09:02, 144 байт)
Честно - никак! Только хакерскими методами. На конкретной платформе работать будет. Но и только.
—
dxp
(02.09.2004 09:08,
пустое
)
Но опять же,
—
Bill
(02.09.2004 09:05, 79 байт)
А это как говаривал капитан Врунгель
—
F8
(02.09.2004 09:13, 46 байт)
:)))
—
Bill
(02.09.2004 09:14,
пустое
)
Массив типа unsigned char и вперед...
—
Звероящер
(02.09.2004 09:06,
пустое
)
Непереносимо. Из-за выравнивания получите кучу потенциальных (и реальных) проблем.
—
dxp
(02.09.2004 09:13, 294 байт)
золотые слова. только на этапе проектирования неправильно был выбран язык программирования
—
bialix
(02.09.2004 12:58,
пустое
)
Предложите альтернативу?
—
dxp
(02.09.2004 13:22,
пустое
)
масса. на этапе проектирования надо внимательно на эту массу смотреть
—
bialix
(02.09.2004 13:34,
пустое
)
Конкретно. MSP430F149. Предложите эту массу? Хотя бы парочку. И чтобы это было по эффективности рантаймового кода не хуже эти уродцев С/С++?
—
dxp
(02.09.2004 13:41,
пустое
)
я с MSP не работаю, поэтому парочку привести не смогу. а один назвать попытаюсь - микропитон
—
bialix
(02.09.2004 13:50,
пустое
)
Хорошо. Пусть будет не MSP430. Выберите
—
dxp
(02.09.2004 13:55, 111 байт)
Вам нужна скорость?
—
bialix
(02.09.2004 13:59,
пустое
)
Естественно. В embedded всегда нужна скорость. И компактность. Ну, так что там с альтернативой C/C++?
—
dxp
(02.09.2004 14:27, 158 байт)
не знаю, что такое фитон. Давайте я выберу такой проц ADSP2106x, с которым я лично работал
—
bialix
(02.09.2004 14:38, 440 байт)
Пардон, замкнуло, питон, конечно.
—
dxp
(02.09.2004 14:55, 1303 байт)
пардоньте, но я такого не говорил!
—
bialix
(02.09.2004 16:20, 84 байт)
Вот интересно - не согласен (+)
—
SM
(02.09.2004 09:22, 534 байт)
именно это и надо
—
viakon
(02.09.2004 09:48,
пустое
)
Вот это и называется - хаки. Т.е. средствами языка это сделать нельзя. Все это
—
dxp
(02.09.2004 09:35, 578 байт)
согласен. в си никак на этапе выполнения нельзя определить тип переменной
—
bialix
(02.09.2004 13:04,
пустое
)
Можно кстати (+)
—
SM
(02.09.2004 14:23, 73 байт)
это сильно круто, но это все-таки не средствами языка - это будет "хак" :-)
—
bialix
(02.09.2004 17:30,
пустое
)
Во всем согласен, кроме (+)
—
SM
(02.09.2004 09:38, 97 байт)
ишфдшчхак - это не только взлом, но и доработка кода программы под свои нужды
—
bialix
(02.09.2004 12:51,
пустое
)
Да, но ЧУЖОЙ программы.
—
SM
(02.09.2004 13:21,
пустое
)
когда дорабатываешь свою программу - это обычно называется отладка или доработка :-)
—
bialix
(02.09.2004 13:54,
пустое
)
короче - хак, это то что мы русские называем "доработать напильником"
—
bialix
(02.09.2004 12:51,
пустое
)
:)) Как раз нет! Взлом -
—
dxp
(02.09.2004 09:48, 477 байт)
В любом случае никаких хаков (+)
—
SM
(02.09.2004 10:21, 199 байт)
:) Беда в том, что
—
dxp
(02.09.2004 10:35, 303 байт)
Это вовсе не беда, для того грабли и придуманы :)))
—
SM
(02.09.2004 12:38,
пустое
)
Я часто ставлю #ifdef и #ifndef, в частности для определения версии компилира...
—
lamerok
(02.09.2004 10:38,
пустое
)
#pragma - Это документированная возможность :-) + Всю жизнь так структуры предаются например в UART
—
lamerok
(02.09.2004 09:54,
пустое
)
Да, документированная. В рамках платформы. Но не стандартная. Поэтому при
—
dxp
(02.09.2004 10:14, 356 байт)
:))) А в вопросе не говорилось, что нужен именно char.
—
Bill
(02.09.2004 09:08,
пустое
)
:-) Ага. Но лучше тогда делать union. Первый элемент - структура, а второй - массив...
—
Звероящер
(02.09.2004 09:13, 106 байт)
так и сделал, но вылазит предупреждение warning: assignment from incompatible pointer type
—
viakon
(02.09.2004 09:42, 42 байт)
разобрался
—
viakon
(02.09.2004 09:44,
пустое
)
Маладэц! :)
—
Звероящер
(02.09.2004 11:20,
пустое
)
По-разному :)
—
Bill
(02.09.2004 08:58,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru