Ho bisogno di implementare alcuni metodi che fanno cose con diversi tipi di matrici di numeri. Di solito, userei i generici per quel lavoro, ma dato che C non li fornisce, sto cercando di emularli usando le macro.Pseudo-generici in C
Ecco un esempio di quello che sto cercando di fare:
#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;
}
Tuttavia, questo non verrà compilato. Il messaggio di errore clang:
error: expected ';' after top level declarator
C'è un modo per farlo in C? O ho bisogno di implementarlo manualmente per ogni tipo?
fyi generics in C# e java sono una funzionalità di runtime. –
Se vuoi leggere un po 'di più su "templates"/"generics" in C, [puoi leggere questa domanda] (http://stackoverflow.com/questions/10950828/simulation-of-templates-in-c). Ci sono alcune risposte interessanti :) – Jehan