Muszę zaimplementować niektóre metody, które robią rzeczy z różnymi rodzajami tablic liczbowych. Zwykle używałbym generycznych dla tego zadania, ale ponieważ C ich nie dostarcza, próbuję teraz emulować je za pomocą makr.Pseudo-generics in C
Oto przykład tego, co próbuję zrobić:
#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;
}
Jednak nie będzie to skompilować. Komunikat o błędzie klang:
error: expected ';' after top level declarator
Czy jest jakiś sposób to zrobić w C? Czy muszę wdrożyć to dla każdego typu ręcznie?
Generics fyi w języku C# i java są obiektami środowiska wykonawczego. –
Jeśli chcesz przeczytać trochę więcej na temat "templates"/"generics" w C, [możesz przeczytać to pytanie] (http://stackoverflow.com/questions/10950828/simulation-of-templates-in-c). Jest kilka interesujących odpowiedzi :) – Jehan