-
- Вот-вот. Если бы я рассуждал теоретически, но я успешно пишу программы без звездочек. Лeoнид Ивaнoвич(97 знак., 18.07.2012 21:43)
- Патамушта они (указатели) бывают умные :) - Codavr(18.07.2012 23:18, ссылка)
- Ну, бля, вот без звездочек, тогда пошел он нах этот виндовс. _basile(69 знак., 18.07.2012 22:53)
- Иваныч, ты насчет динамически выделяемой памяти - не в курсе ? - _basile(18.07.2012 22:33)
- В проектах на микроконтроллерах нет ОС, нет и динамически выделяемой памяти. - Лeoнид Ивaнoвич(18.07.2012 23:18)
- Ну, зачем так конкретно. _basile(148 знак., 19.07.2012 21:43)
- Чушь и ересь. И ОС бывают, и память уж точно есть. - fk0(19.07.2012 00:31)
- Не у всех есть. - Лeoнид Ивaнoвич(19.07.2012 00:33)
- Чушь и ересь есть у всех :)) - MBedder(19.07.2012 00:36)
- Вот с этим нельзя не согласиться :))) - Лeoнид Ивaнoвич(19.07.2012 00:37)
- Чушь и ересь есть у всех :)) - MBedder(19.07.2012 00:36)
- Не у всех есть. - Лeoнид Ивaнoвич(19.07.2012 00:33)
- Нонче у многих давно Осы есть (и на АВР в том числе). - Apтём(19.07.2012 00:24)
- Не нужны они для моих задач. - Лeoнид Ивaнoвич(19.07.2012 00:29)
- Это зря. Оса неплохо упрощает проект на авр. Не надо городить лес на конечных автоматах. В общем попробуйте - понравится. - vesago(20.07.2012 11:12)
- А что есть аналогичное ОСЕ? Она С++ не поддерживает, а это как-то неудобно. - Apтём(20.07.2012 16:08)
- Это зря. Оса неплохо упрощает проект на авр. Не надо городить лес на конечных автоматах. В общем попробуйте - понравится. - vesago(20.07.2012 11:12)
- Не нужны они для моих задач. - Лeoнид Ивaнoвич(19.07.2012 00:29)
- Мне приходилось рожать динамически выделяемую память с автоосвобождением по заданным критериям/условиям - на ассемблерах для особо тощих МК (8751, 90S2313, 68701) :) - MBedder(18.07.2012 23:32 - 23:39)
- Тут некоторое время назад с пеной у рта доказывали, что профессионалы malloc() не используют, там фрагментация, не гарантированно мол, и вообще непрофессионально, MISRA запрещает, профессионалы всё статически распределяют... - fk0(19.07.2012 01:16)
- Один пролог к твоему маллоку займет места больше, чем вся флэш у Тиньки :)) - MBedder(19.07.2012 01:28)
- Байтов 300 займёт весь malloc. - Apтём(19.07.2012 01:55)
- Один пролог к твоему маллоку займет места больше, чем вся флэш у Тиньки :)) - MBedder(19.07.2012 01:28)
- +1 - Shura(18.07.2012 23:39)
- Никто не спорит, что в экзотических случаях все это нужно. Но зачем использовать указатели повсеместно? - Лeoнид Ивaнoвич(18.07.2012 23:33)
- В основном затем, чтобы не гонять СОДЕРЖИМОЕ памяти туда-сюда, а обходиться арифметикой указателей. Повсеместно - разумеется, незачем - MBedder(18.07.2012 23:41)
- Я за то, чтобы гонять ССДЕРЖИМОЕ туда-сюда и не связываться с непонятными указателями. Процессоры стали быстрыми, а мы - старыми. Нельзя сильно напрягать мозг. - Лeoнид Ивaнoвич(18.07.2012 23:50)
- Не такие уж и быстрые - перегнать 4 КБ займет 10 микросекунд даже на сверхоптимальном (1 такт на пересылку 32-битного слова) 100-МГц МК - MBedder(18.07.2012 23:55)
- 4 кБ и курятник - несовместимы :))) - Лeoнид Ивaнoвич(18.07.2012 23:58)
- Эт смотря какие в нем куры :)) - MBedder(19.07.2012 00:01)
- 4 кБ и курятник - несовместимы :))) - Лeoнид Ивaнoвич(18.07.2012 23:58)
- Не такие уж и быстрые - перегнать 4 КБ займет 10 микросекунд даже на сверхоптимальном (1 такт на пересылку 32-битного слова) 100-МГц МК - MBedder(18.07.2012 23:55)
- Я за то, чтобы гонять ССДЕРЖИМОЕ туда-сюда и не связываться с непонятными указателями. Процессоры стали быстрыми, а мы - старыми. Нельзя сильно напрягать мозг. - Лeoнид Ивaнoвич(18.07.2012 23:50)
- В основном затем, чтобы не гонять СОДЕРЖИМОЕ памяти туда-сюда, а обходиться арифметикой указателей. Повсеместно - разумеется, незачем - MBedder(18.07.2012 23:41)
- Тут некоторое время назад с пеной у рта доказывали, что профессионалы malloc() не используют, там фрагментация, не гарантированно мол, и вообще непрофессионально, MISRA запрещает, профессионалы всё статически распределяют... - fk0(19.07.2012 01:16)
- даже в элементарных процессах удобно юзать пулы памяти + очереди. Чем блокирующие передачи с поллингом - MegaJohn(18.07.2012 23:33)
- Вы сами поняли, что сказали? - Лeoнид Ивaнoвич(18.07.2012 23:34)
- v1 - блокирующие передачи с поллингом MegaJohn(503 знак., 18.07.2012 23:44)
- За поллинг надо отрывать яйца, как за педофилию :)) - MBedder(18.07.2012 23:50)
- А за "очередь событий" на тиньке? :))) - Скрипач(18.07.2012 23:58)
- На Тиньке, кстати, неплохо крутится вполне себе приличная квази-ОС - MBedder(19.07.2012 00:00)
- Огласите весь список пжлст. - Т.Достоевский(19.07.2012 00:04)
- OSA, FemtoOS и т.д. --> - MBedder(19.07.2012 00:11, ссылка)
- Угу. Вместо прикладной программы :) - Скрипач(19.07.2012 00:02)
- Кроме, а не вместо. И прикладных программ там отнюдь не одна - MBedder(19.07.2012 00:07)
- ...думатель и неонка. Скрипач(81 знак., 19.07.2012 00:11)
- А MP3 плейер с клавой, дисплеем и jog-dial'ом не хочешь? - MBedder(19.07.2012 00:24)
- Мой первый вариант подобного девайса на m168 (MP3, SD, управление и индикация по САN шине, загрузчик с SD) уже года 4 эмулирует CD чейнджер в Ford Fusion одного товарища из нашей конторки. 6 кб флэша осталось свободными... - Гудвин(19.07.2012 01:18)
- Не тинька это. - Скрипач(19.07.2012 01:28)
- Ну уж что под руками было... Если чО, то владею навыком делать из м168 SIP4 ;) - Гудвин(19.07.2012 01:42)
- Не тинька это. - Скрипач(19.07.2012 01:28)
- А смысл? - Скрипач(19.07.2012 00:32)
- А смысл - в том числе и такой: Чтобы комменты не писать на каждую строку кода, и когда сам откроешь исходник через пол-года - не будешь тупо глазеть на свой же код. - _basile(19.07.2012 21:48)
- Да хотя бы чтобы показать .NET-гавнокодерам, как можно добиться больших результатов при мизерных ресурсозатратах - MBedder(19.07.2012 00:35)
- Показать - это круто. Пока ты будешь "показывать" говнокодеры заработают свою часть бабла. А ты - останешься со своими "показушками". - _basile(19.07.2012 21:51)
- Я своими "показушками" уже заработал столько бабла, сколько говнокодерам и в разрядную сетку не влезет :)) - MBedder(19.07.2012 22:04)
- Говнокодеры сюда не ходят. Поэтому померяться "разрядными сетками" не с кем. - _basile(19.07.2012 22:10)
- Ну почему же? Без ложной скромности скажу, что по сравнению с MBedder'ом я вполне могу считать себя говнокодером. Наши подходы сильно отличаются. - Vladimir Ljaschko(20.07.2012 08:30)
- Последнее предложение на HTML5 было на 700£ в день, а на .NET на 180 штук швейцарских в год с бенефитами. Столько влезет в разрядную сетку? - linus(22.07.2012 01:46, )
- Ну почему же? Без ложной скромности скажу, что по сравнению с MBedder'ом я вполне могу считать себя говнокодером. Наши подходы сильно отличаются. - Vladimir Ljaschko(20.07.2012 08:30)
- Говнокодеры сюда не ходят. Поэтому померяться "разрядными сетками" не с кем. - _basile(19.07.2012 22:10)
- Я своими "показушками" уже заработал столько бабла, сколько говнокодерам и в разрядную сетку не влезет :)) - MBedder(19.07.2012 22:04)
- Показать - это круто. Пока ты будешь "показывать" говнокодеры заработают свою часть бабла. А ты - останешься со своими "показушками". - _basile(19.07.2012 21:51)
- Кстати, имел бы смысл такой девайс, Лeoнид Ивaнoвич(134 знак., 19.07.2012 00:35)
- Дюна, Попкорн, WD делает. Последний и вовсе недорогой. - Т.Достоевский(19.07.2012 00:40, ссылка, ссылка)
- Мой первый вариант подобного девайса на m168 (MP3, SD, управление и индикация по САN шине, загрузчик с SD) уже года 4 эмулирует CD чейнджер в Ford Fusion одного товарища из нашей конторки. 6 кб флэша осталось свободными... - Гудвин(19.07.2012 01:18)
- А MP3 плейер с клавой, дисплеем и jog-dial'ом не хочешь? - MBedder(19.07.2012 00:24)
- ...думатель и неонка. Скрипач(81 знак., 19.07.2012 00:11)
- Кроме, а не вместо. И прикладных программ там отнюдь не одна - MBedder(19.07.2012 00:07)
- Огласите весь список пжлст. - Т.Достоевский(19.07.2012 00:04)
- На Тиньке, кстати, неплохо крутится вполне себе приличная квази-ОС - MBedder(19.07.2012 00:00)
- А за "очередь событий" на тиньке? :))) - Скрипач(18.07.2012 23:58)
- ну а про пулы памяти сможете в инете почитать. На АВР занимает нефиг и ресурсов - MegaJohn(18.07.2012 23:45)
- Пулами памяти надо грамотно управлять, иначе можно нарваться на массу проблем. По ссылкам есть немного интересного. Главная задача, сделать так чтоб не случалось такого что нужно выделить память скажем под структуру, а памяти полно но вся побита OlegPowerC(225 знак., 19.07.2012 12:52, ссылка, ссылка)
- я сделал через MegaJohn(357 знак., 19.07.2012 13:00)
- Пулами памяти надо грамотно управлять, иначе можно нарваться на массу проблем. По ссылкам есть немного интересного. Главная задача, сделать так чтоб не случалось такого что нужно выделить память скажем под структуру, а памяти полно но вся побита OlegPowerC(225 знак., 19.07.2012 12:52, ссылка, ссылка)
- За поллинг надо отрывать яйца, как за педофилию :)) - MBedder(18.07.2012 23:50)
- "Продаю вайтовые трузера на зипперах с файновым лейблом на лефтовом покете"(с) :)) - MBedder(18.07.2012 23:42)
- v1 - блокирующие передачи с поллингом MegaJohn(503 знак., 18.07.2012 23:44)
- Вы сами поняли, что сказали? - Лeoнид Ивaнoвич(18.07.2012 23:34)
- В проектах на микроконтроллерах нет ОС, нет и динамически выделяемой памяти. - Лeoнид Ивaнoвич(18.07.2012 23:18)
- Чтобы не писать комментарии. Чем отличается С++ от С ? - _basile(18.07.2012 22:31)
- Полиморфизмом и инкапсуляцией. - Лeoнид Ивaнoвич(18.07.2012 23:19)
- Иванычу - зачот! - _basile(19.07.2012 21:56)
- Не правильный ответ, - двумя плюсами ;) - Make_Pic(19.07.2012 01:40)
- Полиморфизмом и инкапсуляцией. - Лeoнид Ивaнoвич(18.07.2012 23:19)
- А как Вы понимаете указатель стека? - Юра(18.07.2012 21:53, )
- Указателя стека для Си-программиста не существует. - Лeoнид Ивaнoвич(18.07.2012 23:19)
- Как это? А голова, а хвост? Вы что, действительно не в курсе? Тогда, уважаемый Си-программист, почитайте про cтруктуры данных (списки, очереди, стеки, деревья). - Юра(19.07.2012 00:20, )
- Я не знаю никакого указателя стека, и всё у меня работает. Зачем что-то читать? - Лeoнид Ивaнoвич(19.07.2012 00:28)
- Ну, если не надо реализовывать в памяти более-менее связанные структуры данных, добавлять-убавлять записи - тогда действительно не надо. - Юра(19.07.2012 00:40, )
- Юра, как соотносятся структуры, списки и стек? А как Вы понимаете кучу (HEAP)? - _basile(19.07.2012 22:36)
- Все смешали в одну HEAP? Не различаете структуры "struct" и структуры данных? "Информатика. Классификация структур данных". Юра(53 знак., 20.07.2012 13:16, )
- Юра, как соотносятся структуры, списки и стек? А как Вы понимаете кучу (HEAP)? - _basile(19.07.2012 22:36)
- Ну, если не надо реализовывать в памяти более-менее связанные структуры данных, добавлять-убавлять записи - тогда действительно не надо. - Юра(19.07.2012 00:40, )
- Я не знаю никакого указателя стека, и всё у меня работает. Зачем что-то читать? - Лeoнид Ивaнoвич(19.07.2012 00:28)
- Как это? А голова, а хвост? Вы что, действительно не в курсе? Тогда, уважаемый Си-программист, почитайте про cтруктуры данных (списки, очереди, стеки, деревья). - Юра(19.07.2012 00:20, )
- Указатель стека я не понимаю никак. Это - проблемы компилятора. _basile(70 знак., 18.07.2012 22:57)
- Указатель стека в С - не существует. Онли настройки линкера. - _basile(18.07.2012 22:40)
- Указателя стека для Си-программиста не существует. - Лeoнид Ивaнoвич(18.07.2012 23:19)
- Зачем?... Так не только программисты указатели используют: например в АВР реализовали аж 3 регистра-указателя (X, Y, Z). Странный вопрос - ЗАЧЕМ. - Apтём(18.07.2012 21:50)
- На ассемблере использовал. А на Си даже не знаю, какие там есть регистры. - Лeoнид Ивaнoвич(18.07.2012 23:20)
- Вот именно - странный вопрос. А что нужно пользователям? - _basile(18.07.2012 23:02)
- При чем тут регистры, если писать на С? Есть обычные переменные на С, ЗАЧЕМ указатели на них? - Vladimir Ljaschko(18.07.2012 21:55)
- Банально, возврат более чем одного результата из функции. Скрипач(58 знак., 18.07.2012 22:24)
- Если количественно объём данных небольшой то, возможно, часто лучше возвращать структуру... - fk0(18.07.2012 23:53)
- Это необязательно для средних по размеру программ, можно глобальные переменные поменять напрямую. - Vladimir Ljaschko(18.07.2012 22:26)
- А что, есть вообще, в этом мире что-то, без чего нельзя обойтись? Нельзя заменить ничем другим? Не встречал. - Скрипач(18.07.2012 22:28)
- Если Вы чувствуете, что без чего-то можно обойтись, нужно без этого обходиться. Но общий настрой ветки противоположный. Скорее всего, - Лeoнид Ивaнoвич(18.07.2012 23:32, ссылка)
- Обойтись - значит пожертвовать. Об остальнов Вам в ЖЖ написал. - Скрипач(18.07.2012 23:57)
- А жертвовать разве плохо? - Лeoнид Ивaнoвич(18.07.2012 23:58)
- Дело не в действии, как таковом. Дело в адресате. - Скрипач(18.07.2012 23:59)
- Слишком сложно для меня. Не понимаю. - Лeoнид Ивaнoвич(19.07.2012 00:04)
- Не всякая жертва ведет к духовному росту. Скрипач(60 знак., 19.07.2012 00:08)
- Пля, зачем так сложно. Мы же тут об инструментах, типа перфоратора (компилятора). - _basile(19.07.2012 22:00)
- Мы не об инструменте. Мы о творце. - Скрипач(20.07.2012 20:05)
- Кто его знает. А так ли были нужны вещи, ушедшие в ту страну? Лишнее - вот главный враг человека. - Лeoнид Ивaнoвич(19.07.2012 00:15)
- Никто. Но я ставлю выше "принцип минимального действия". - Скрипач(19.07.2012 00:17 - 20.07.2012 20:06)
- Пля, зачем так сложно. Мы же тут об инструментах, типа перфоратора (компилятора). - _basile(19.07.2012 22:00)
- Не всякая жертва ведет к духовному росту. Скрипач(60 знак., 19.07.2012 00:08)
- Слишком сложно для меня. Не понимаю. - Лeoнид Ивaнoвич(19.07.2012 00:04)
- Дело не в действии, как таковом. Дело в адресате. - Скрипач(18.07.2012 23:59)
- А жертвовать разве плохо? - Лeoнид Ивaнoвич(18.07.2012 23:58)
- Обойтись - значит пожертвовать. Об остальнов Вам в ЖЖ написал. - Скрипач(18.07.2012 23:57)
- Вопрос о цене замены и потерях. - Vladimir Ljaschko(18.07.2012 22:36)
- Если Вы чувствуете, что без чего-то можно обойтись, нужно без этого обходиться. Но общий настрой ветки противоположный. Скорее всего, - Лeoнид Ивaнoвич(18.07.2012 23:32, ссылка)
- А что, есть вообще, в этом мире что-то, без чего нельзя обойтись? Нельзя заменить ничем другим? Не встречал. - Скрипач(18.07.2012 22:28)
- Например, я не представляю, как без геморроя средствами Си без указателей создавать списки. Возможно, структуры это не "обычные переменные"... - Vit(18.07.2012 22:20)
- Зачем списки в курятниках? Списки кур поименно? - Лeoнид Ивaнoвич(18.07.2012 23:21)
- Ну, например, количество датчиков для разных курятников даже на одной фабрике разное. Если опрос это отдельная
задачафункция, то она может опрашивать список подключенных датчиков и складывать полученные значения в соответствующие поля того Vit(110 знак., 18.07.2012 23:34)- Функция получает номер датчика, сохраняет значение в массиве с таким же индексом. Явно указатели не используются. - Лeoнид Ивaнoвич(18.07.2012 23:36)
- А как вы в программе размер массива зададите, если заранее неизвестно количество используемых датчиков? Размер сразу на все возможное количество, насколько ОЗУ хватит? - rezident(18.07.2012 23:42)
- В реальных устройствах такого не бывает, что неизвестно количество датчиков. Тот, кто рисовал схему и плату, количество знает точно. Если какие-то датчики могут быть не подключены - ничего, массив выделяем всегда для всех. Устройство ведь должно Лeoнид Ивaнoвич(42 знак., 18.07.2012 23:52)
- Бывает. Бывает, что несколько разных типов датчиков со своим типом опроса (аналоговые, различные цифровые, задаваемые с "верхнего уровня"), приложению назначается откуда брать значения (например клавиатурным вводом назначается), а к тому же с Vit(103 знак., 18.07.2012 23:59)
- А если количество датчиков потребует памяти больше, чем физически есть в контроллере??? Всё это бред собачий! Под такие вещи надо выделять массив структур и заполнять его при работе программы. Размер массива - максимальное количество FDA(236 знак., 19.07.2012 08:34)
- Например, 2 канала связи. Одних датчиков (на одном канале связи) может быть больше, других (на другом канале связи) меньше в зависимости от оперативно вводимой конфигурации. На каждый канал своя опрашивалка - ей не нужно сообщать свойствами из Vit(634 знак., 19.07.2012 08:55)
- А не проще в одном H-файле задать ВСЕ необходимые для программы константы? И в зависимости от них уже выделять память под массивы. В любом случае программа должно знать сколько она может поддерживать датчиков и адекватно реагировать если их FDA(42 знак., 19.07.2012 09:58)
- Если конфигурировать на ходу, то не проще. А планировать надо не в сферовакуумных константах, а в пределах реально доступных ресурсов. Особенно если пишет не один человек. Vit(409 знак., 19.07.2012 10:08)
- Использование динамических структур чаще оправдано в других случаях, например, при реализации сложного меню в интерфейсе. Здесь они реально обеспечивают удобство при описании дерева, хотя опять же Вы должны знать максимальное кол-во таких FDA(406 знак., 19.07.2012 10:02)
- Повторяю - НЕ НУЖНО знать максимальное кол-во таких элементов - в этом существенная разница, а стОит обслуживание списков очень недорого, да и компиляторы хорошо оптимизируют соответствующие конструкции. Вы не стесняйтесь - попробуйте:) И Vit(104 знак., 19.07.2012 10:13)
- Ладно, это тупой спор. Вы уходите о того, с чего начали. - FDA(19.07.2012 10:19)
- это Вы сказали, что использовать списки - бред собачий. при этом оказалось, что аргументация Ваша НИКАКАЯ и о списках Вы только слышали. - Vit(19.07.2012 10:23)
- Я нормально изложил свою позицию, советую перечитать вышесказанное ещё раз. - FDA(19.07.2012 10:28)
- Ответьте, пожалуйста, на один вопрос: как задать размер списка? - Vit(19.07.2012 10:53)
- Я нормально изложил свою позицию, советую перечитать вышесказанное ещё раз. - FDA(19.07.2012 10:28)
- это Вы сказали, что использовать списки - бред собачий. при этом оказалось, что аргументация Ваша НИКАКАЯ и о списках Вы только слышали. - Vit(19.07.2012 10:23)
- Ладно, это тупой спор. Вы уходите о того, с чего начали. - FDA(19.07.2012 10:19)
- Повторяю - НЕ НУЖНО знать максимальное кол-во таких элементов - в этом существенная разница, а стОит обслуживание списков очень недорого, да и компиляторы хорошо оптимизируют соответствующие конструкции. Вы не стесняйтесь - попробуйте:) И Vit(104 знак., 19.07.2012 10:13)
- А не проще в одном H-файле задать ВСЕ необходимые для программы константы? И в зависимости от них уже выделять память под массивы. В любом случае программа должно знать сколько она может поддерживать датчиков и адекватно реагировать если их FDA(42 знак., 19.07.2012 09:58)
- Например, 2 канала связи. Одних датчиков (на одном канале связи) может быть больше, других (на другом канале связи) меньше в зависимости от оперативно вводимой конфигурации. На каждый канал своя опрашивалка - ей не нужно сообщать свойствами из Vit(634 знак., 19.07.2012 08:55)
- Не сталкивался с таким никогда, поэтому мне трудно говорить на эту тему. И не верю в реальность такого. Я бы написал отдельную прошивку. - Лeoнид Ивaнoвич(19.07.2012 00:01)
- У меня такие девайсы сплошь и рядом - Vit(19.07.2012 00:07)
- Трудно найти общий язык тому, кто делает курятники, с тем, кто делает космические корабли. - Лeoнид Ивaнoвич(19.07.2012 00:10)
- При чём тут корабли? Я в своё время чуток коровники автоматизировал - ну и что тут такого? - Vit(19.07.2012 00:19)
- Вот и я автоматизировал. И коровники, и элеваторы. И всё без указателей. - Лeoнид Ивaнoвич(19.07.2012 00:28)
- Что тут сказать - герой - Vit(19.07.2012 00:31)
- надо говорить "Да гений, гений." ;> - Snaky(19.07.2012 02:25)
- Что тут сказать - герой - Vit(19.07.2012 00:31)
- Вот и я автоматизировал. И коровники, и элеваторы. И всё без указателей. - Лeoнид Ивaнoвич(19.07.2012 00:28)
- Вывод: надо делать космические курятники :)) - MBedder(19.07.2012 00:13)
- При чём тут корабли? Я в своё время чуток коровники автоматизировал - ну и что тут такого? - Vit(19.07.2012 00:19)
- Трудно найти общий язык тому, кто делает курятники, с тем, кто делает космические корабли. - Лeoнид Ивaнoвич(19.07.2012 00:10)
- У меня такие девайсы сплошь и рядом - Vit(19.07.2012 00:07)
- А если количество датчиков потребует памяти больше, чем физически есть в контроллере??? Всё это бред собачий! Под такие вещи надо выделять массив структур и заполнять его при работе программы. Размер массива - максимальное количество FDA(236 знак., 19.07.2012 08:34)
- Бывает. Бывает, что несколько разных типов датчиков со своим типом опроса (аналоговые, различные цифровые, задаваемые с "верхнего уровня"), приложению назначается откуда брать значения (например клавиатурным вводом назначается), а к тому же с Vit(103 знак., 18.07.2012 23:59)
- В реальных устройствах такого не бывает, что неизвестно количество датчиков. Тот, кто рисовал схему и плату, количество знает точно. Если какие-то датчики могут быть не подключены - ничего, массив выделяем всегда для всех. Устройство ведь должно Лeoнид Ивaнoвич(42 знак., 18.07.2012 23:52)
- Это использование глобальных переменных, ну и, опять же, явное задание количества датчиков. Никто не запрещает, но модульный подход против:) - Vit(18.07.2012 23:42)
- Глобальные они только внутри небольшого модуля. А что такое "неизвестное количество датчиков", я так и не понял. У нас же конкретная печатная плата. - Лeoнид Ивaнoвич(18.07.2012 23:54)
- У Вас для каждой платы своя программа? У меня нет. Я ленивый пишу одну прогу для всех плат. Поэтому и кол-во датчиков не ограничиваю. Alloc рулит и уже давно(на пиках с 2005г). - abivan(19.07.2012 11:21 - 11:26)
- У Вас, насколько помнится, используется MicroLAN - датчики вне платы - Vit(19.07.2012 00:01)
- Да, но никогда не используется их адресация. Каждый датчик тянется отдельным проводом. - Лeoнид Ивaнoвич(19.07.2012 00:02)
- И это правильно, ибо так надежнее всего - от вылета одного датчика обмен с соседями не пострадает - MBedder(19.07.2012 00:05)
- Да, но никогда не используется их адресация. Каждый датчик тянется отдельным проводом. - Лeoнид Ивaнoвич(19.07.2012 00:02)
- Глобальные они только внутри небольшого модуля. А что такое "неизвестное количество датчиков", я так и не понял. У нас же конкретная печатная плата. - Лeoнид Ивaнoвич(18.07.2012 23:54)
- А как вы в программе размер массива зададите, если заранее неизвестно количество используемых датчиков? Размер сразу на все возможное количество, насколько ОЗУ хватит? - rezident(18.07.2012 23:42)
- Функция получает номер датчика, сохраняет значение в массиве с таким же индексом. Явно указатели не используются. - Лeoнид Ивaнoвич(18.07.2012 23:36)
- Ну, например, количество датчиков для разных курятников даже на одной фабрике разное. Если опрос это отдельная
- Угу. Нужно спросить у Л.И., использует ли он структуры. - Vladimir Ljaschko(18.07.2012 22:24)
- Да, структуры использую. Но доступ делаю через ".", а не "->". - Лeoнид Ивaнoвич(18.07.2012 23:22)
- Хмм - Тогда здесь и всплывает полезное качество указателей - использование для для адресации к регистрам, битовым полям и т.д. - Make_Pic(19.07.2012 02:10)
- Не посмотрел - ниже Гудвин в ту же "точку" пишет - Make_Pic(19.07.2012 02:12)
- М-м... Есть буфер. Принимаются/передаются пакеты с самыми разношерстными структуированными данными. Интерпретируются, например, по содержимому первого байта(тип пакета/структуры). Что в тиньке, что в ПЦ доступ к полям без присваивания адреса Гудвин(91 знак., 19.07.2012 01:03)
- только при "->" однозначно будет подставлено константное значение смещения, а при "." как компилер захатит/смагёт - может и в рантайме начать считать - Vit(18.07.2012 23:48 - 23:50)
- Для гнуси выше сказанное аксиома, для других компиляторов не факт - Make_Pic(19.07.2012 02:16)
- Хм, а где это описано? - MBedder(18.07.2012 23:59)
- поищу первоисточник - маякну. по факту было так. например, один и тот же код для AVR IAR 5.40 в этом деле заметно уделывает 5.20 - Vit(19.07.2012 00:05)
- Небось просто крякнутая оптимизация загнулась :)) - MBedder(19.07.2012 00:06)
- уговаривать не буду. если не найду, то можешь считать, что я прогнал (профит мне останется:) - Vit(19.07.2012 00:10)
- Небось просто крякнутая оптимизация загнулась :)) - MBedder(19.07.2012 00:06)
- поищу первоисточник - маякну. по факту было так. например, один и тот же код для AVR IAR 5.40 в этом деле заметно уделывает 5.20 - Vit(19.07.2012 00:05)
- +100500 - патамушта на один клавотык меньше :)) - MBedder(18.07.2012 23:45)
- Это патамушта вы современные IDE не используете. В Visual Studio количество клавотыков для "." и "->" одинаковое (1 штука). - Apтём(19.07.2012 00:17)
- Да я тебе в любой самой сраной IDE сколько угодно наваяю макрокнопок - толку то - MBedder(19.07.2012 00:22)
- Это патамушта вы современные IDE не используете. В Visual Studio количество клавотыков для "." и "->" одинаковое (1 штука). - Apтём(19.07.2012 00:17)
- Для такого способа доступа нужно знать имя структуры. - rezident(18.07.2012 23:43)
- Я сам даю имена всем структурам, массивам, переменным. Соответственно, я их знаю. Или Вы про программирование в состоянии сильного алкогольного опъянения? - Лeoнид Ивaнoвич(18.07.2012 23:47)
- А что, разве можно что-либо писать на С на трезвую голову? :)) - MBedder(18.07.2012 23:56)
- Если она typedef'нутая - то необязательно - MBedder(18.07.2012 23:46)
- Я сам даю имена всем структурам, массивам, переменным. Соответственно, я их знаю. Или Вы про программирование в состоянии сильного алкогольного опъянения? - Лeoнид Ивaнoвич(18.07.2012 23:47)
- Хмм - Тогда здесь и всплывает полезное качество указателей - использование для для адресации к регистрам, битовым полям и т.д. - Make_Pic(19.07.2012 02:10)
- Да, структуры использую. Но доступ делаю через ".", а не "->". - Лeoнид Ивaнoвич(18.07.2012 23:22)
- Зачем списки в курятниках? Списки кур поименно? - Лeoнид Ивaнoвич(18.07.2012 23:21)
- Указатель нужен для того, чтобы можно было указывать на объект, не зная его имени или даже типа. rezident(390 знак., 18.07.2012 22:09)
- Это ООП, пока просто про Си. - Лeoнид Ивaнoвич(18.07.2012 23:23)
- Это простой Си - ANSI C, pure C, C89. - rezident(18.07.2012 23:30)
- В Си нет понятия "объект". - Лeoнид Ивaнoвич(18.07.2012 23:38)
- Как это? "Переменные и константы являются основными объектами, с которыми оперирует программа". Керниган, Ричи, Библия.Или не по-нашему:"Variables and constants are the basic data objects manipulated in a program" - Юра(19.07.2012 08:46, )
- "Переменная - это такой "ящичек" с именем, в котором может храниться некое значение..." (C) fk0(226 знак., 19.07.2012 09:00 - 09:04)
- Зато в русском языке есть :-P - rezident(18.07.2012 23:46)
- Как это? "Переменные и константы являются основными объектами, с которыми оперирует программа". Керниган, Ричи, Библия.Или не по-нашему:"Variables and constants are the basic data objects manipulated in a program" - Юра(19.07.2012 08:46, )
- В Си нет понятия "объект". - Лeoнид Ивaнoвич(18.07.2012 23:38)
- Это простой Си - ANSI C, pure C, C89. - rezident(18.07.2012 23:30)
- Это понятие всегда можно привести к адресу памяти, не называя это указателем на байт. - Vladimir Ljaschko(18.07.2012 22:16)
- Третий, вдоль барной стойки (индекс массива :) - Скрипач(18.07.2012 22:11 - 22:15)
- Не катит. Массив это структура из одинаковых (однотипных) элементов. - rezident(18.07.2012 22:14)
- Запись struct вполне может быть элементом массива. - Скрипач(18.07.2012 22:16)
- Структура может состоять из элементов разного типа, в т.ч. из других структур. Но для доступа к структуре нужно иметь ее описание (определение). Для доступа к массиву достаточно знать тип одного его элемента. То бишь rezident(115 знак., 18.07.2012 22:29 - 22:35)
- Ну и складывайте в массив однотипные структуры. Работайте с индексами массивов. Что не так? - Скрипач(18.07.2012 22:35)
- Ну получите вы адрес структуры из этого массива структур и что дальше? Для доступа к элементу массиву нужно знать имя массива или его адрес, а также тип и индекс элемента. Для доступа к элементу структуры нужно знать ее имя или адрес и rezident(99 знак., 18.07.2012 22:43)
- Чуть неудобнее - кроме типа, нужно декларировать внешний массив структур. Всего то. - Vladimir Ljaschko(18.07.2012 22:47)
- Да. И что? - Скрипач(18.07.2012 22:45)
- А то, что к перемещаемому или динамически создаваемому объекту нельзя обеспечить доступ по его имени, а только через указатель по его адресу. - rezident(18.07.2012 22:53)
- В других яву прекрасно обеспечивается доступ по-имени... Например в Tcl. - fk0(19.07.2012 10:53)
- Ну нет у автора динамически создаваемых объектов. - Vladimir Ljaschko(19.07.2012 09:59)
- А то, что к перемещаемому или динамически создаваемому объекту нельзя обеспечить доступ по его имени, а только через указатель по его адресу. - rezident(18.07.2012 22:53)
- Ну получите вы адрес структуры из этого массива структур и что дальше? Для доступа к элементу массиву нужно знать имя массива или его адрес, а также тип и индекс элемента. Для доступа к элементу структуры нужно знать ее имя или адрес и rezident(99 знак., 18.07.2012 22:43)
- Ну и складывайте в массив однотипные структуры. Работайте с индексами массивов. Что не так? - Скрипач(18.07.2012 22:35)
- Структура может состоять из элементов разного типа, в т.ч. из других структур. Но для доступа к структуре нужно иметь ее описание (определение). Для доступа к массиву достаточно знать тип одного его элемента. То бишь rezident(115 знак., 18.07.2012 22:29 - 22:35)
- Запись struct вполне может быть элементом массива. - Скрипач(18.07.2012 22:16)
- Не катит. Массив это структура из одинаковых (однотипных) элементов. - rezident(18.07.2012 22:14)
- Это ООП, пока просто про Си. - Лeoнид Ивaнoвич(18.07.2012 23:23)
- Легко. Скрипач(154 знак., 18.07.2012 21:59)
- Я сам использую указатели в этом случае :), но можно сложить объекты в массив и передавать в функцию индекс. - Vladimir Ljaschko(18.07.2012 22:01)
- Индекс? Это если массив однотипных объектов. А если (к примеру) нужно читать-записывать например данные(настройки) из eeprom, то что передать функциям чтения-записи? Данные разные по длине и адресам. Если использовать указатели то функция такая: Apтём(136 знак., 18.07.2012 22:09)
- Совершенно не понимаю проблемы. Любые данные имеют определенный тип. Данные каждого типа сложили в свой массив, для доступа используем индекс. Что не так, зачем указатели? - Лeoнид Ивaнoвич(18.07.2012 23:44)
- Экземляр данных может быть в единственном количестве. Его тоже как массив определять? Apтём(202 знак., 19.07.2012 00:22)
- Ничего не понял. - Лeoнид Ивaнoвич(19.07.2012 00:26)
- Индекс и есть примитивный указатель. Захочешь и индексы в массив сложить - будет указатель на указатель, и так до полного удовлетворения :)) - MBedder(19.07.2012 00:04)
- Но с индексами как приятно работать - всё понятно! - Лeoнид Ивaнoвич(19.07.2012 00:04)
- И приятно, и понятно.... только Bill(600 знак., 19.07.2012 00:23)
- Я за то, чтобы пожертвовать эффективностью во имя простоты. А Вы? - Лeoнид Ивaнoвич(19.07.2012 00:25)
- Когда как. Использование и указателей, и индексов не является самоцелью. Хотя, Bill(186 знак., 19.07.2012 00:33)
- Верно, надо знать. Но если мозг слаб, тогда выход один - упрощение. - Лeoнид Ивaнoвич(19.07.2012 00:36)
- Тогда предложите ПРОСТОЙ способ вернуть из функции более одного значения. - Скрипач(19.07.2012 00:29)
- Возвращать структуру, например. - fk0(19.07.2012 09:07)
- А разве в Си можно возвращать из функции структуру (не указатель на нее)? - Скрипач(19.07.2012 10:13)
- А функцией div() возвращающей div_t что, никогда не приходилось пользоваться? fk0(104 знак., 19.07.2012 10:55)
- Можно. - Bill(19.07.2012 10:26)
- А разве в Си можно возвращать из функции структуру (не указатель на нее)? - Скрипач(19.07.2012 10:13)
- Почитайте книги по основам программирования - возврат нескольких значений из функции есть ЗЛО! Функции с количеством параметров более трёх - ЗЛО! Код с такими функциями становится крайне тяжело читаем и последующая доработка его становится очень FDA(131 знак., 19.07.2012 08:42)
- Да просто в поделке бородачей нет ни адекватных типов данных (например списков), которые можно было возвращать естесственным образом из функции, нет именованных аргументов функций, ни значений по-умолчанию, да много чего. Отсюда и. И не позволяет fk0(165 знак., 19.07.2012 09:13)
- Из своего опыта работы с чистым Си скажу, что указатели реально незаменимы только при работе со структурами (struсt). По другому их никак не изменить из функции. Но здесь всё довольно лаконично описывается и, кстати, -> в тему. В C++ добавилась FDA(453 знак., 19.07.2012 10:10)
- Ну почему же? В Си можно Bill(115 знак., 19.07.2012 11:15)
- Указатели в явном виде нужны тогда, когда нужны манипуляции над их значением (адресом). Что-то вроде ссылок, конечно нужно. Ещё в поделках бородачей не хватает with. И вложенных функций. Я фигею, конечно. 20 лет назад всё это было в fk0(85 знак., 19.07.2012 11:01)
- Да, вложенных функций реально не хватает. Но тут религия не позволяет, возможно, добавить это в новый стандарт Си. Так же как и добавить операции ++, --, +=, *= и пр. в язык Паскаль (Delphi). - FDA(19.07.2012 11:14)
- А какая польза от вложенных функций, если их так не хватает? - Bill(19.07.2012 11:17)
- Вложенная функция видит переменные функции в которую она вложена. А в C сейчас, если нужна функция, приходится нужные переменные или так передавать огромной кучей и ещё по-указателям (если они модифицируются), или заворачивать в структуру и fk0(112 знак., 19.07.2012 11:32)
- static. Ведь прекрасно знаешь сам abivan(159 знак., 19.07.2012 12:11)
- static - это не то. Они память не там отъедают, и отъедают навсегда. А идея в "динамическом" распределении на стеке. - AlexBi(19.07.2012 13:04)
- Ну впринципе, если не нужно быть thread safe, то можно и static... правда своя есть. - fk0(19.07.2012 14:03)
- static - это не то. Они память не там отъедают, и отъедают навсегда. А идея в "динамическом" распределении на стеке. - AlexBi(19.07.2012 13:04)
- Все дело в том, что программа на Паскале Bill(301 знак., 19.07.2012 11:55)
- static. Ведь прекрасно знаешь сам abivan(159 знак., 19.07.2012 12:11)
- Вложенная функция видит переменные функции в которую она вложена. А в C сейчас, если нужна функция, приходится нужные переменные или так передавать огромной кучей и ещё по-указателям (если они модифицируются), или заворачивать в структуру и fk0(112 знак., 19.07.2012 11:32)
- А какая польза от вложенных функций, если их так не хватает? - Bill(19.07.2012 11:17)
- Да, вложенных функций реально не хватает. Но тут религия не позволяет, возможно, добавить это в новый стандарт Си. Так же как и добавить операции ++, --, +=, *= и пр. в язык Паскаль (Delphi). - FDA(19.07.2012 11:14)
- Из своего опыта работы с чистым Си скажу, что указатели реально незаменимы только при работе со структурами (struсt). По другому их никак не изменить из функции. Но здесь всё довольно лаконично описывается и, кстати, -> в тему. В C++ добавилась FDA(453 знак., 19.07.2012 10:10)
- :) - Vit(19.07.2012 08:57, ссылка)
- Да просто в поделке бородачей нет ни адекватных типов данных (например списков), которые можно было возвращать естесственным образом из функции, нет именованных аргументов функций, ни значений по-умолчанию, да много чего. Отсюда и. И не позволяет fk0(165 знак., 19.07.2012 09:13)
- Было выше. Глобальные переменные внутри модуля. - Лeoнид Ивaнoвич(19.07.2012 00:30)
- Еще - структура. - Лeoнид Ивaнoвич(19.07.2012 00:31)
- Но чаще я тупо пишу две, три функции. Оверхед, зато понятно. Лeoнид Ивaнoвич(107 знак., 19.07.2012 00:32)
- Указатель на функцию тоже полезная штука. В обработчиках меню. - Скрипач(19.07.2012 00:46)
- Не проще ли такое через виртуальные функции класса делать? - Apтём(19.07.2012 01:09)
- стоп, речь про С - Make_Pic(19.07.2012 02:29)
- А, точно... Но к чему такое ограничение? - Apтём(19.07.2012 02:38)
- Ни к чему. В нормальных ЯВУ есть eval. В C++ нет. - fk0(19.07.2012 07:57)
- А, точно... Но к чему такое ограничение? - Apтём(19.07.2012 02:38)
- стоп, речь про С - Make_Pic(19.07.2012 02:29)
- А я меню кручу через switch. - Лeoнид Ивaнoвич(19.07.2012 00:48)
- И это не производит впечатления благородного аскетизма. Скорее второе. - Скрипач(19.07.2012 01:02)
- Закат солнца вручную. - Apтём(19.07.2012 01:10)
- И это не производит впечатления благородного аскетизма. Скорее второе. - Скрипач(19.07.2012 01:02)
- Не проще ли такое через виртуальные функции класса делать? - Apтём(19.07.2012 01:09)
- Указатель на функцию тоже полезная штука. В обработчиках меню. - Скрипач(19.07.2012 00:46)
- Но чаще я тупо пишу две, три функции. Оверхед, зато понятно. Лeoнид Ивaнoвич(107 знак., 19.07.2012 00:32)
- Еще - структура. - Лeoнид Ивaнoвич(19.07.2012 00:31)
- Возвращать структуру, например. - fk0(19.07.2012 09:07)
- Когда как. Использование и указателей, и индексов не является самоцелью. Хотя, Bill(186 знак., 19.07.2012 00:33)
- Я за то, чтобы пожертвовать эффективностью во имя простоты. А Вы? - Лeoнид Ивaнoвич(19.07.2012 00:25)
- Прибавь к индексу адрес начала массива в правильной размерности - получится полноценный указатель :)) - MBedder(19.07.2012 00:15)
- Не, спасибо, лучше останусь с индексом :))) - Лeoнид Ивaнoвич(19.07.2012 00:24)
- И приятно, и понятно.... только Bill(600 знак., 19.07.2012 00:23)
- Но с индексами как приятно работать - всё понятно! - Лeoнид Ивaнoвич(19.07.2012 00:04)
- Экземляр данных может быть в единственном количестве. Его тоже как массив определять? Apтём(202 знак., 19.07.2012 00:22)
- Совершенно не понимаю проблемы. Любые данные имеют определенный тип. Данные каждого типа сложили в свой массив, для доступа используем индекс. Что не так, зачем указатели? - Лeoнид Ивaнoвич(18.07.2012 23:44)
- А можно и не складывать. Скрипач(58 знак., 18.07.2012 22:07)
- Массив структур. - Лeoнид Ивaнoвич(18.07.2012 23:45)
- Индекс? Это если массив однотипных объектов. А если (к примеру) нужно читать-записывать например данные(настройки) из eeprom, то что передать функциям чтения-записи? Данные разные по длине и адресам. Если использовать указатели то функция такая: Apтём(136 знак., 18.07.2012 22:09)
- Я сам использую указатели в этом случае :), но можно сложить объекты в массив и передавать в функцию индекс. - Vladimir Ljaschko(18.07.2012 22:01)
- Банально, возврат более чем одного результата из функции. Скрипач(58 знак., 18.07.2012 22:24)
- Вот-вот. Если бы я рассуждал теоретически, но я успешно пишу программы без звездочек. Лeoнид Ивaнoвич(97 знак., 18.07.2012 21:43)