Pseudo-genéricos em C

Eu preciso implementar alguns métodos que fazem coisas com diferentes tipos de matrizes numéricas. Normalmente, eu usaria genéricos para esse trabalho, mas como C não os fornece, agora estou tentando imitá-los usando macros.

Aqui está um exemplo do que estou tentando fazer:

#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;
}

No entanto, isso não será compilado. A mensagem de erro de clang:

erro: esperado ';' após o declarator de nível superior

Existe alguma maneira de fazer isso em C? Ou preciso implementar isso para cada tipo manualmente?

questionAnswers(3)

yourAnswerToTheQuestion