структуры в памяти, ghost_in_machine, 22-Фев-06, 13:44 [смотреть все]Здравствуйте! Вопрос касается размещения полей структур в памяти. Я хочу создать функцию для поиска данных в массиве (произвольных) структур, заданных в общем виде как void*. А как задать поле для поиска? В текущем варианте я использую смещение от начала структуры в массиве и длину поля. Но это неудобно т.к. иногда поля приходиться переставляться, что приводит к трудно выводимым ошибкам глубоко в коде программы, кроме того, несколько нелогичным выглядит самому указывать размер поля и размер структуры данного типа, ведь компилятор сам знает о них в каждом конкретном случае. Может кто подскажет, как сделать правильно? Спасибо. |
- структуры в памяти, chip, 15:30 , 22-Фев-06 (1)
>Здравствуйте! Вопрос касается размещения полей структур в памяти. Я хочу создать функцию >для поиска данных в массиве (произвольных) структур, заданных в общем виде >как void*. А как задать поле для поиска? В текущем варианте >я использую смещение от начала структуры в массиве и длину поля. >Но это неудобно т.к. иногда поля приходиться переставляться, что приводит к >трудно выводимым ошибкам глубоко в коде программы, кроме того, несколько нелогичным >выглядит самому указывать размер поля и размер структуры данного типа, ведь >компилятор сам знает о них в каждом конкретном случае. Может кто >подскажет, как сделать правильно? Спасибо. Как вариант, использовать макрос offsetof .
- структуры в памяти, ghost_in_machine, 17:58 , 22-Фев-06 (2)
- структуры в памяти, dimus, 07:22 , 28-Фев-06 (3)
Еще вариант - есть две структуры: структура фиксированного размера вида struct NODE { struct NODE* next; // Следующий элемент списка. Если это массив, то ненужен int data_type; // Тип сохраненных данных void* data; // Указатель на сохраненные данные }Сохраненные данные могут быть любыми. Для них есть два условия: 1. Данные должны быть такого типа, который известен и их тип помещаться в dada_type 2. Должен быть зарезервирован тип данных "ПУСТЫЕ ДАННЫЕ" При таком типе хранения довольно просто выполнять поиск, сортировку и т.п. для любых типов данных. Вобщем, это попытка на С сделать некое подмножество RTTI
|