У меня динамический ADT массива, тип которого элемент является ничтожным *Как повторно использовать один и тот же фрагмент кода C с различными typedef в одной программе?
// In dyn_array.h
typedef void* element;
void append(array *a, element e);
inline void set(array *a, int i, element e);
...
// dyn_array.c contains the implementation
и используются во многих частях моей программы. Когда я добавляю новые функции в программу, теперь мне нужен динамический массив с элементом int вместо void *. Я знаю, что одним из решений может быть создание dyn_arrayi.h и dyn_arrayi.c, содержимое которых почти идентично dyn_array.h и dyn_array.c, за исключением оператора typedef и имен функций. Но это не кажется мне изящным решением, потому что я, очевидно, бессмысленно повторяю.
Есть ли лучшее решение, так что мне не нужно повторять себя? Возможно компиляция различных версий объектного кода? Как именно вы это сделаете? Благодарю.
element is void * now, если у вас есть целое число и вы хотите использовать ту же функцию, вы можете передать & integer вместо void *. –
Предлагаю вам прочитать это сообщение: http://stackoverflow.com/questions/11164621/templating-in-c-using-the-preprocessor –
@Dayalrai К сожалению, в моем реальном коде я действительно хочу сохранить структуру. Спасибо, что упомянул об этом ;-) –