-
- Ну тогда X macro. Обсасывалось уже -> - SciFi(14.08.2014 16:00, ссылка)
- Спасибо. Интересная фишка. Но как она может мне помочь что-то не соображу. - Codavr(14.08.2014 16:05)
- Я тоже не соображу, потому что непонятно, что надо :-) - SciFi(14.08.2014 16:08)
- Хочется локально в функции хранить статический экземпляр структуры, чтобы никто минуя функцию не залез в нее, все остальные имеют описание структуры и по этому описанию читают или пишут данные в эту структуру. - Codavr(14.08.2014 16:13)
- а объявить указатель на структуру константного типа? и лазить на чтение через него? - Mahagam(14.08.2014 20:57)
- Поясни пжалста, как это должно выглядеть. - Codavr(14.08.2014 22:55)
- Мало информации. Зачем это всё? Защита от госдепа? - SciFi(14.08.2014 16:19)
- От себя родного. От своих же косяков. Эстетствую. Некий универсальный интерфейс к данным :) - Codavr(14.08.2014 16:23)
- Универсальный, если данные разных типов, косяков отгребешь на порядок больше, чем отдельный указатель на структуру с модификатором const. Можешь этот указатель получать из функции. - Скрипач(14.08.2014 21:08)
- Поясни что имеется ввиду, а то я что-то нефтыкаю. - Codavr(14.08.2014 22:58)
- Ты запросил значение поля функцией, а кто проверит, что переменная, куда ты его хочешь получить, подходит по типу? Наверняка же из функции (void*) вернешь. Компилятор - не сможет. Какими ужасами чревато рассказывать? - Скрипач(14.08.2014 23:42 - 23:46)
- Программирование ваще чревато всякими ужасными вещами. Все опять же сводится к банальной задаче многокритериальной оптимизации. Возвращать я хотел опять же элемент структуры который попросил. Неужели я хочу так много? - Codavr(15.08.2014 01:34 - 01:36)
- Я бы поостерегся херить контроль типов. Ты многое недоговариваешь. Скрипач(648 знак., 15.08.2014 12:52 - 13:05)
- Да я уже кажется все что мог договорил. Ну разве что осталось добавить, что все это крутится под FreeRTOC и я хотел внутри функции учинить семафор чтобы не пострадала целостность данных при множественном доступе. Эта функция предполагалась некой Codavr(443 знак., 15.08.2014 20:53)
- Я бы, тогда, спрятал структуру полностью. Ввел бы абстрактные (define) индексы и обращался на чтение/запись по ним. - Скрипач(15.08.2014 20:59)
- Это как? - Codavr(15.08.2014 21:22)
- Отставить, занесло на повороте. У тебя там структуры, у меня просто список параметров. Максимум, неявно заданные группы. Еще мысль: Вычислять указатель поля и читать спец.процедурой. Вот так: Скрипач(292 знак., 15.08.2014 21:31 - 22:12)
- Ну так это примерно то же что я сейчас имею. Или предлагается для каждого элемента свою функцию городить ради проверки типа? А если мне надо вложенную структуру прочитать/записать. - Codavr(15.08.2014 21:34 - 21:37, ссылка)
- Функций нужно -
по числу основных типовтак, чтобы автоматическое приведение типов работало. Больше - нет смысла. - Скрипач(15.08.2014 21:58 - 16.08.2014 11:15)- А если структуру нужно передать? - Codavr(15.08.2014 22:06)
- Тебе функцию написать тяжело? Поверь это на много легче, чем искать, где ты во float положил int, через (void*) - Скрипач(15.08.2014 22:09)
- Ващета там функция получается неслабая и если на каждый основной тип и каждый определенный юзером тип писать еще одну получится нехилый такой чемодан. Одних имен функций надо напридумывать целую тележку. И весь этот гимор ради светлой идеи Codavr(36 знак., 15.08.2014 22:15)
- "Настоящую" функцию спрячь в обертки. Для сохранения проверки типов нужен только тип передаваемого параметра и тип результата. А лучше заставь юзера обращаться только к полям, а не "под-деревьям". - Скрипач(15.08.2014 22:20 - 22:37)
- Дык. Красоты охота! На костылях прыгать впадлу. - Codavr(15.08.2014 22:23)
- Главное - себя не обмани. Если отдаешь юзерам под-деревья - отдавай побайтовые копии. Если указатели - отдавай по базе "ноль" и пусть читают твоими функциями, А НЕ НАПРЯМУЮ :))) - Скрипач(15.08.2014 22:35)
- Ну так я и хотел чтобы общение исключительно через обертку. А идея насчет указателя по базе ноль мне понравилась. Codavr(117 знак., 15.08.2014 22:37 - 22:46)
- Ты хотел передать структуру, помнишь? Ты должен или передать указатель по базе ноль, или побайтовую копию в памяти. Иначе пустишь козла в огород :) - Скрипач(15.08.2014 22:41)
- Вот указатель по базе ноль меня оченно возбудил. - Codavr(15.08.2014 22:42)
- Я бы еще подумал о том, нет ли адресного фрагмента, который при обращении к нему генерирует прерывание :) Написал бы свой обработчик и... :)))) - Скрипач(15.08.2014 22:44)
- договаривай - Codavr(15.08.2014 22:47)
- СИРЕНУ БЫ ВКЛЮЧАЛ :о)))) Лучше включить сирену, чем отдать юзеру "флаг запуска баллистических ракет", из таблицы векторов прерываний :) - Скрипач(15.08.2014 22:50)
- Таблицу можно перенести :) - Codavr(15.08.2014 22:52)
- Главное - факт "чтения из подпространства" выявить. Жаль, в прерывание не передается "адрес-размер" вывалившейся команды чтения. Можно было бы обрабатывать запросы юзеров прямо в прерываниях :) - Скрипач(15.08.2014 22:54)
- Нет совершенства :) - Codavr(15.08.2014 23:16)
- Главное - факт "чтения из подпространства" выявить. Жаль, в прерывание не передается "адрес-размер" вывалившейся команды чтения. Можно было бы обрабатывать запросы юзеров прямо в прерываниях :) - Скрипач(15.08.2014 22:54)
- Таблицу можно перенести :) - Codavr(15.08.2014 22:52)
- СИРЕНУ БЫ ВКЛЮЧАЛ :о)))) Лучше включить сирену, чем отдать юзеру "флаг запуска баллистических ракет", из таблицы векторов прерываний :) - Скрипач(15.08.2014 22:50)
- договаривай - Codavr(15.08.2014 22:47)
- Я бы еще подумал о том, нет ли адресного фрагмента, который при обращении к нему генерирует прерывание :) Написал бы свой обработчик и... :)))) - Скрипач(15.08.2014 22:44)
- Вот указатель по базе ноль меня оченно возбудил. - Codavr(15.08.2014 22:42)
- Ты хотел передать структуру, помнишь? Ты должен или передать указатель по базе ноль, или побайтовую копию в памяти. Иначе пустишь козла в огород :) - Скрипач(15.08.2014 22:41)
- Ну так я и хотел чтобы общение исключительно через обертку. А идея насчет указателя по базе ноль мне понравилась. Codavr(117 знак., 15.08.2014 22:37 - 22:46)
- Главное - себя не обмани. Если отдаешь юзерам под-деревья - отдавай побайтовые копии. Если указатели - отдавай по базе "ноль" и пусть читают твоими функциями, А НЕ НАПРЯМУЮ :))) - Скрипач(15.08.2014 22:35)
- Дык. Красоты охота! На костылях прыгать впадлу. - Codavr(15.08.2014 22:23)
- "Настоящую" функцию спрячь в обертки. Для сохранения проверки типов нужен только тип передаваемого параметра и тип результата. А лучше заставь юзера обращаться только к полям, а не "под-деревьям". - Скрипач(15.08.2014 22:20 - 22:37)
- Ващета там функция получается неслабая и если на каждый основной тип и каждый определенный юзером тип писать еще одну получится нехилый такой чемодан. Одних имен функций надо напридумывать целую тележку. И весь этот гимор ради светлой идеи Codavr(36 знак., 15.08.2014 22:15)
- Тебе функцию написать тяжело? Поверь это на много легче, чем искать, где ты во float положил int, через (void*) - Скрипач(15.08.2014 22:09)
- А если структуру нужно передать? - Codavr(15.08.2014 22:06)
- Функций нужно -
- Можно на макроязыке делать определение структуры и генерить сишный код для работы с ней. - SciFi(15.08.2014 21:35)
- Нахватались хитростей. Рассказывай как. - Codavr(15.08.2014 21:38)
- Ну так это примерно то же что я сейчас имею. Или предлагается для каждого элемента свою функцию городить ради проверки типа? А если мне надо вложенную структуру прочитать/записать. - Codavr(15.08.2014 21:34 - 21:37, ссылка)
- Отставить, занесло на повороте. У тебя там структуры, у меня просто список параметров. Максимум, неявно заданные группы. Еще мысль: Вычислять указатель поля и читать спец.процедурой. Вот так: Скрипач(292 знак., 15.08.2014 21:31 - 22:12)
- Это как? - Codavr(15.08.2014 21:22)
- Я бы, тогда, спрятал структуру полностью. Ввел бы абстрактные (define) индексы и обращался на чтение/запись по ним. - Скрипач(15.08.2014 20:59)
- Да я уже кажется все что мог договорил. Ну разве что осталось добавить, что все это крутится под FreeRTOC и я хотел внутри функции учинить семафор чтобы не пострадала целостность данных при множественном доступе. Эта функция предполагалась некой Codavr(443 знак., 15.08.2014 20:53)
- Я бы поостерегся херить контроль типов. Ты многое недоговариваешь. Скрипач(648 знак., 15.08.2014 12:52 - 13:05)
- Программирование ваще чревато всякими ужасными вещами. Все опять же сводится к банальной задаче многокритериальной оптимизации. Возвращать я хотел опять же элемент структуры который попросил. Неужели я хочу так много? - Codavr(15.08.2014 01:34 - 01:36)
- Ты запросил значение поля функцией, а кто проверит, что переменная, куда ты его хочешь получить, подходит по типу? Наверняка же из функции (void*) вернешь. Компилятор - не сможет. Какими ужасами чревато рассказывать? - Скрипач(14.08.2014 23:42 - 23:46)
- Поясни что имеется ввиду, а то я что-то нефтыкаю. - Codavr(14.08.2014 22:58)
- Пуленепробиваемая версия на сях будет монструозная. Такшта советую снизить требования к программе и повысить требования к себе :-) Кстати, assert() иногда оч. помогает. - SciFi(14.08.2014 16:28)
- К себе не хочется ;) - Codavr(14.08.2014 16:31)
- Наверняка есть ещё новомодные языки, в которых это имееццо искаропки. - SciFi(14.08.2014 16:34)
- Нунах. Мне лень. Я не энтузиаст-лингвист. - Codavr(14.08.2014 16:35)
- На что только не идут люди, лишь бы С++ - не изучать(14.08.2014 19:56, )
- Первый раз я изучал С++ вместе с появлением Turbo C++ 3.1. Нефкурил. Второй раз когда вышла 95 винда. Ну тут уже пришлось поднапрячься. - Сodavr(14.08.2014 20:54 - 15.08.2014 04:01)
- На что только не идут люди, лишь бы С++ - не изучать(14.08.2014 19:56, )
- Нунах. Мне лень. Я не энтузиаст-лингвист. - Codavr(14.08.2014 16:35)
- Наверняка есть ещё новомодные языки, в которых это имееццо искаропки. - SciFi(14.08.2014 16:34)
- К себе не хочется ;) - Codavr(14.08.2014 16:31)
- Универсальный, если данные разных типов, косяков отгребешь на порядок больше, чем отдельный указатель на структуру с модификатором const. Можешь этот указатель получать из функции. - Скрипач(14.08.2014 21:08)
- От себя родного. От своих же косяков. Эстетствую. Некий универсальный интерфейс к данным :) - Codavr(14.08.2014 16:23)
- #define не подойдет? Структура правда будет глобальной. vmp(93 знак., 14.08.2014 16:18)
- Вот как раз от глобальности и хочу избавиться. Твой offset_of был бы очень кстати, но у меня структуры вложенные и вместо красоты получится дикое нагромождение :( - Codavr(14.08.2014 16:23)
- Ну так заменить в дефайне имя структуры на вызов функции, возвращающей указатель на структуру. - vmp(14.08.2014 16:28)
- Не понял Codavr(378 знак., 14.08.2014 16:32 - 16:42)
- В моем варианте нет прямого доступа к структуре (она статик "внутри") и сохранен контроль типов. - Скрипач(15.08.2014 21:38)
- Как вложенную структуру прочитать/записать? - Codavr(15.08.2014 21:40)
- Передаёшь полностью вычисленный адрес поля, по отношению к базовому адресу, равному нолю. Его можно прибавить к "спрятанному" базовому адресу и ву-а-ля :) - Скрипач(15.08.2014 21:45)
- Вы чо седни сговорились меня в глупости уличать? Покаж как это :) - Codavr(15.08.2014 21:49)
- Передаёшь полностью вычисленный адрес поля, по отношению к базовому адресу, равному нолю. Его можно прибавить к "спрятанному" базовому адресу и ву-а-ля :) - Скрипач(15.08.2014 21:45)
- Как вложенную структуру прочитать/записать? - Codavr(15.08.2014 21:40)
- В моем варианте нет прямого доступа к структуре (она статик "внутри") и сохранен контроль типов. - Скрипач(15.08.2014 21:38)
- Не понял Codavr(378 знак., 14.08.2014 16:32 - 16:42)
- Ну так заменить в дефайне имя структуры на вызов функции, возвращающей указатель на структуру. - vmp(14.08.2014 16:28)
- Вот как раз от глобальности и хочу избавиться. Твой offset_of был бы очень кстати, но у меня структуры вложенные и вместо красоты получится дикое нагромождение :( - Codavr(14.08.2014 16:23)
- а объявить указатель на структуру константного типа? и лазить на чтение через него? - Mahagam(14.08.2014 20:57)
- Хочется локально в функции хранить статический экземпляр структуры, чтобы никто минуя функцию не залез в нее, все остальные имеют описание структуры и по этому описанию читают или пишут данные в эту структуру. - Codavr(14.08.2014 16:13)
- Я тоже не соображу, потому что непонятно, что надо :-) - SciFi(14.08.2014 16:08)
- Спасибо. Интересная фишка. Но как она может мне помочь что-то не соображу. - Codavr(14.08.2014 16:05)
- Ну тогда X macro. Обсасывалось уже -> - SciFi(14.08.2014 16:00, ссылка)