-
- Только не забудьте, что в массивах счет идет с нуля! Ксения(67 знак., 11.11.2013 22:11)
- И никакого выравнивания. - plainuser(12.11.2013 09:15)
- ну эт понятно :) В общем union законно решает мой вопрос. Надеюсь так вот можно ? Анонимно. UraGun(135 знак., 11.11.2013 22:15)
- Так хуже, поскольку само объявление union, как и объявление struct, никакого объекта не порождают, а только описывают его структуру. Поэтому вам придется либо дать имя этому юниону, чтобы им штамповать такие объекты, или Ксения(833 знак., 12.11.2013 01:16 - 01:39)
- Спасибо большое за детальность. Но использование анонимных юнионов вроде как не нарушение - UraGun(284 знак., 12.11.2013 07:30 - 07:53)
- ИАР постепенно убирает из своих компиляторов использование анонимных юнионов, я после влета с компиятором MSP430 больше их не использую, и вам не советую. - Vladimir Ljaschko(12.11.2013 15:46)
- Пардон, Вам где-ни будь попадалась официальная информация по этому поводу ? Стандарт какой, или ещё какой документ ? Надеюсь это предположение не базируется на опыте работы с одним из множества компиляторов, который в отличие от остальных взял и UraGun(197 знак., 12.11.2013 16:20)
- "Язык C++ не допускает анонимные структуры." (C) Microsoft => - Ксения(12.11.2013 17:02, ссылка)
- А какое отношение имеют анонимные структуры к анонимным юнионам ? Спасибо конечно, но это как то не о том. - UraGun(12.11.2013 17:25)
- "Специально пролистал стандарт С99 - нет там anonymous unions, так что фича чисто С++ная." (С) Nemo => - Ксения(12.11.2013 18:00, ссылка)
- А какое отношение имеют анонимные структуры к анонимным юнионам ? Спасибо конечно, но это как то не о том. - UraGun(12.11.2013 17:25)
- Я лично переписывался и ИАРом, и уже неоднократно затрагивал эту тему на Сахаре (пруфлинк). Сам ИАР ссылается, что у них ANSI C, а, стало быть анонимные юнионы - не ANSI C. Предлагаю проверить это утверждение ИАРа самостоятельно. Для поиска Vladimir Ljaschko(168 знак., 12.11.2013 16:38, ссылка)
- Спасибо. - UraGun(12.11.2013 17:01)
- "Язык C++ не допускает анонимные структуры." (C) Microsoft => - Ксения(12.11.2013 17:02, ссылка)
- Пардон, Вам где-ни будь попадалась официальная информация по этому поводу ? Стандарт какой, или ещё какой документ ? Надеюсь это предположение не базируется на опыте работы с одним из множества компиляторов, который в отличие от остальных взял и UraGun(197 знак., 12.11.2013 16:20)
- Похоже на то, что вы втянулись возражения придумывать. Делайте тогда, как хотите, - уламывать вас нет никакого желания. - Ксения(12.11.2013 15:35)
- ИАР постепенно убирает из своих компиляторов использование анонимных юнионов, я после влета с компиятором MSP430 больше их не использую, и вам не советую. - Vladimir Ljaschko(12.11.2013 15:46)
- Спасибо большое за детальность. Но использование анонимных юнионов вроде как не нарушение - UraGun(284 знак., 12.11.2013 07:30 - 07:53)
- это изврат. Сделайте нормальный union, а потом собирайте массив из них хоть на 100500 элементов - koyodza(11.11.2013 23:48)
- Кстати, с обявлением массива в >65535 тоже были проблемы, как я помню. - UraGun(12.11.2013 00:02)
- про 100500 я сказал образно. Кстати, используя указатели можно замутить массив любого размера в пределах имеющейся памяти koyodza(54 знак., 12.11.2013 00:06)
- Тогда я получаю массив юнионов, а мне нужен юнион масивов. - UraGun(12.11.2013 00:00)
- "не нужен тебе пистолет, Гарри. Тебе нужен я" (с) Snatch - koyodza(12.11.2013 00:05)
- Я не думаю что ты стрелять не умеешь, я знаю, что ты стрелять не умеешь :) - UraGun(12.11.2013 00:06)
- Вся эта канитель задумана не для совместного доступа к значениям одних и тех-же ячеек памяти под видом разных переменных, а для использования одних и тех же ячеек памяти, для хранения значений одинаковых по длинне структур, нкогда не используемых UraGun(136 знак., 12.11.2013 00:10)
- А оверлеи в линкере, а переменные в соотв. сегментах не пробовали? Гораздо изящнее, ИМХО. - Хитрый Китаец(12.11.2013 11:04)
- Пиздец. Лютый бешенный, дикий и неистовый пиздец. Хуже было, только когда я услышал, что в A[123] хранится что-то одно в один момент времени и что-то другое в другой... И на фоне этого malloc() считается чем-то плохим и негодным? Он хотя бы fk0(155 знак., 12.11.2013 02:03)
- Я тоже так делаю :) Если функциональность четко разделена, какие проблемы? Vladimir Ljaschko(99 знак., 12.11.2013 08:20)
- Когда "хранится что-то одно в один момент времени и что-то другое в другой" это абсолютно нормальная практика при ограниченности ресурсов - Shura(12.11.2013 08:18)
- Ага, а ещё прождает нефрагментированные куски свободной памяти, вот уже где неистовый пиздец. - UraGun(12.11.2013 07:32)
- зачем задавать вопрос, если не укладывающийся в рамки ожидаемого ответ априори игнорируется? - koyodza(12.11.2013 00:12)
- Ну с чего Вы взяли что игнорируется то ? Я вообще спрашивал об экстерн, вы первично посоветовали юнион, один из вариантов использования юнион мне подошел, почему Вас задевает что подошел не тот, на котором настаиваете Вы ? :) - UraGun(12.11.2013 00:15)
- если бы я знал, что Вы примените новое знание не по назначению, то не советовал бы :=) - koyodza(12.11.2013 00:20)
- :)))))))) срыв шаблонов - моё кредо. - UraGun(12.11.2013 00:46)
- так что ли ?! - MegaJohn(12.11.2013 00:55, картинка)
- похоже на то - koyodza(12.11.2013 01:00)
- При недостатке аргументации, главное - вовремя перейти на личности, понимаю :) Так что кроме "наползания", и того что так "никто не делает" Вас ещё не устраивает в предложенном мной написании ? UraGun(68 знак., 12.11.2013 01:03)
- да как-то стыдно становится перед преемниками кода, теряя 63кб памяти на dummy. Хотя если у вас её много то почему бы и нет. - MegaJohn(12.11.2013 01:18)
- почему же никто? Очень многие именно так и делают. А наползания Вам мало? Тогда пишите на ассемблере, там нет ни юнионов, ни структур. Вообще никаких проблем, можно фиксированные адреса для всех переменных использовать - koyodza(12.11.2013 01:15)
- При недостатке аргументации, главное - вовремя перейти на личности, понимаю :) Так что кроме "наползания", и того что так "никто не делает" Вас ещё не устраивает в предложенном мной написании ? UraGun(68 знак., 12.11.2013 01:03)
- Умение впадать в крайности несомненно Ваш конек :) - UraGun(12.11.2013 00:56)
- похоже на то - koyodza(12.11.2013 01:00)
- так что ли ?! - MegaJohn(12.11.2013 00:55, картинка)
- :)))))))) срыв шаблонов - моё кредо. - UraGun(12.11.2013 00:46)
- если бы я знал, что Вы примените новое знание не по назначению, то не советовал бы :=) - koyodza(12.11.2013 00:20)
- Ну с чего Вы взяли что игнорируется то ? Я вообще спрашивал об экстерн, вы первично посоветовали юнион, один из вариантов использования юнион мне подошел, почему Вас задевает что подошел не тот, на котором настаиваете Вы ? :) - UraGun(12.11.2013 00:15)
- нафига Вам юнион массивов и чем не устраивает массив юнионов? - koyodza(12.11.2013 00:09)
- юнион массивов чреват тем, что при разной размерности массивов получите наползание элементов с разным индексом друг на друга. С массивом юнионов такого не произойдёт - koyodza(12.11.2013 00:13)
- Я однократно обявляю юнион с проверенными по длине массивами структур, и непременно инициализирую каждый элемент. Откуда взяться наползанию ? - UraGun(12.11.2013 00:17 - 07:57)
- технически верны оба варианта. логически - массив юнионов красивее. в любом случае юнионы у вас решат проблему выравнивания автоматом. а вот проблема больших и малых индейцев никуда не денется. весьма вероятно, что на тех платформах что у вас в Mahagam(195 знак., 12.11.2013 00:27)
- завтра понадобится добавить ещё одно устройство и привет. Вообще писать в таком стиле, с прибитыми гвоздями массивами - это самый что ни на есть говнокод - koyodza(12.11.2013 00:18)
- Видимо, по осени многих тянет чего-нибудь к чему-нибудь прибить :-) - Shura(12.11.2013 08:16)
- Ты ничего не понимаешь в современной копроэкономике. Увы, но это верный способ заработать больше и стабильно (ПО должно требовать перманентной поддержки). - fk0(12.11.2013 02:18)
- да, мне не раз говорили, что выгоднее делать г*вно - koyodza(12.11.2013 10:51)
- Настоящий копроворчун, всегда найдёт повод поворчать на привычную тему. - UraGun(12.11.2013 11:01)
- да, мне не раз говорили, что выгоднее делать г*вно - koyodza(12.11.2013 10:51)
- Ну и какие проблемы добавить в юнион ещё один тип устройства, вписав его в те-же 100 байт ? Если переменных понадобится больше - просто изменим количество байт на один адрес и поправим количество думми в конце. - UraGun(12.11.2013 00:39)
- никаких. Пишите сразу на ассемблере, будет ещё лучше - koyodza(12.11.2013 01:01)
- Этот ответ Вы несомненно тоже относите к тем что по сути вопроса :) - UraGun(12.11.2013 01:04)
- никаких. Пишите сразу на ассемблере, будет ещё лучше - koyodza(12.11.2013 01:01)
- Я однократно обявляю юнион с проверенными по длине массивами структур, и непременно инициализирую каждый элемент. Откуда взяться наползанию ? - UraGun(12.11.2013 00:17 - 07:57)
- Удобством записи при обращении. - UraGun(12.11.2013 00:13)
- напишите здесь оба варианта и покажите, где неудобства - koyodza(12.11.2013 00:14)
- у меня есть три структуры для описания переменных трёх типов участников сети. К примеру. UraGun(1123 знак., 12.11.2013 00:34)
- За подгонку байтиков в структуре к бинарному формату -- сжигать нужно. При работе с бинарными форматами _всегда_ нужна ручная сериализация и десериализация. Увы. Архимегагонокод. - fk0(12.11.2013 02:07)
- предполагаю, что проектируются костыли для окучивания буфера обмена копированием "ячеек" без перепаковки. грустная история. - Vit(12.11.2013 01:18)
- наверное, прав был ув.ЛИ - koyodza(12.11.2013 01:23, ссылка)
- говнокод шопесец. Выравнивание считаем вручную koyodza(427 знак., 12.11.2013 01:08)
- Да вроде никто и не просил. Как никто и не просил переживать. - UraGun(12.11.2013 07:41)
- благодарю что дали понять по поводу бесполезности ответов на ваши вопросы. Сэкономлю время в следующий раз - koyodza(12.11.2013 10:48)
- Да уж, будьте любезны. - UraGun(12.11.2013 10:58)
- благодарю что дали понять по поводу бесполезности ответов на ваши вопросы. Сэкономлю время в следующий раз - koyodza(12.11.2013 10:48)
- Да вроде никто и не просил. Как никто и не просил переживать. - UraGun(12.11.2013 07:41)
- у меня есть три структуры для описания переменных трёх типов участников сети. К примеру. UraGun(1123 знак., 12.11.2013 00:34)
- напишите здесь оба варианта и покажите, где неудобства - koyodza(12.11.2013 00:14)
- юнион массивов чреват тем, что при разной размерности массивов получите наползание элементов с разным индексом друг на друга. С массивом юнионов такого не произойдёт - koyodza(12.11.2013 00:13)
- Вся эта канитель задумана не для совместного доступа к значениям одних и тех-же ячеек памяти под видом разных переменных, а для использования одних и тех же ячеек памяти, для хранения значений одинаковых по длинне структур, нкогда не используемых UraGun(136 знак., 12.11.2013 00:10)
- Я не думаю что ты стрелять не умеешь, я знаю, что ты стрелять не умеешь :) - UraGun(12.11.2013 00:06)
- "не нужен тебе пистолет, Гарри. Тебе нужен я" (с) Snatch - koyodza(12.11.2013 00:05)
- Кстати, с обявлением массива в >65535 тоже были проблемы, как я помню. - UraGun(12.11.2013 00:02)
- А теперь попробуйте перед union сделать вот так. framer(196 знак., 11.11.2013 22:27)
- Кстати, эт вы для какого из АИРов указали ? Не для AVR ли ? Потому как вопрос вообще по IARу для ARM. - UraGun(11.11.2013 22:45)
- Это даже для Win на х86 есть вот например для GCC выглядит так framer(422 знак., 11.11.2013 22:54 - 22:57)
- Как бы оптимизировать по размеру тут вообще не нужно... Достаточно для этого отлюключить оптимизацию в опциях проекта, надеюсь ? - UraGun(11.11.2013 22:43)
- Кстати, эт вы для какого из АИРов указали ? Не для AVR ли ? Потому как вопрос вообще по IARу для ARM. - UraGun(11.11.2013 22:45)
- Так хуже, поскольку само объявление union, как и объявление struct, никакого объекта не порождают, а только описывают его структуру. Поэтому вам придется либо дать имя этому юниону, чтобы им штамповать такие объекты, или Ксения(833 знак., 12.11.2013 01:16 - 01:39)
- Только не забудьте, что в массивах счет идет с нуля! Ксения(67 знак., 11.11.2013 22:11)