- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
#include <stdio.h>
#define declare_generic_func(x)\
x add_##x(x x1,x x2) \
{\
return x1+x2;\
}
#define generic_func(x,name) name##_##x
declare_generic_func(int);
declare_generic_func(double);
int main()
{
int a,b;
double ad,bd;
printf("Enter two integer numbers: ");
scanf("%d%d",&a,&b);
printf("Result: %d\n",generic_func(int,add)(a,b));
printf("Enter two real numbers: ");
scanf("%lf%lf",&ad,&bd);
printf("Result: %lf\n",generic_func(double,add)(ad,bd));
return 0;
}
xXx_totalwar 14.08.2010 11:38 # 0
>generic_func(double
>Дженерики
да ну?
koodeer 14.08.2010 20:51 # 0
Altravert 14.08.2010 21:22 # 0
frp 15.08.2010 11:53 # +1
Altravert 15.08.2010 15:48 # 0
absolut 15.08.2010 11:17 # +1
Как следствие придется писать
declare_generic_func(char);
declare_generic_func(float);
declare_generic_func(unsigned int);
declare_generic_func(long long); ... и прочее недостающее.
Говоря терминологией Си++ получается, что работают только специализации.
TheCalligrapher 04.09.2010 09:41 # 0