Опитвам се да направя своя собствена реализация на общи структури от данни в C за моя собствена полза от обучението. Сегашното ми усилие е вектор и искам той да може да поддържа един произволен тип (или поне размер на типа, но не е ли това всичко, което наистина има значение в C?). Моята структура е следната:
struct vector
{
void *item;
size_t element_size;
size_t num_elements;
}
Това, което обаче не разбирам, е как мога да се позова на конкретни елементи в масива *item, ако типът трябва да е произволен. Знам element_size, но това не ми помага при рефериране на индекс (напр. item[5]), защото void не е тип. Реших, че ще бъде най-лесно да се отнасят към елементите като отмествания в байтове. Така че, ако държах вектор от структури с размер 12, item[5] ще бъде на 12*5=60 байта от item*. Не разбирам обаче как да извлека тези данни. Знам, че искам 12 байта от item+60, но как да накарам компилатора да разбере това? Навлизам ли в територията на препроцесора?