Псевдообобщения в Си
Мне нужно реализовать некоторые методы, которые делают вещи с различными видами числовых массивов. Обычно я использовал бы дженерики для этой работы, но поскольку C не предоставляет их, я сейчас пытаюсь подражать им с помощью макросов.
Вот пример того, что я пытаюсь сделать:
#ifndef TYPE
#define TYPE int
#endif
TYPE get_minimum_##TYPE (TYPE * nums, int len){
TYPE min = nums[0];
for (int i = 1; i < len; i++) {
if (nums[i] < min) {
min = nums[i];
}
}
return min;
}
Однако это не скомпилируется. Сообщение об ошибке лязга:
ошибка: ожидается ';' после декларатора верхнего уровня
Есть ли способ сделать это в C? Или мне нужно реализовать это для каждого типа вручную?