I'm trying to write a somehow-generic printArray function in C, which I will able to run with several programs, each with a different type of array. I did this:
#define TYPE int /* or char or double*/
void printArray(TYPE *a, int size){
for (int i=0; i<size; i++){
#if TYPE == int
printf("%d ", a[i]);
#elif TYPE == char
printf("%c ", a[i]);
#elif TYPE == double
printf("%f ", a[i]);
#endif
}
printf("\n");
}
I have tried running it, but no matter what TYPE is defined to be, the first #if
always checks in, meaning - if the if's are written:
#if TYPE == int
printf("int");
#elif TYPE == char
printf("char");
#elif TYPE == double
printf("double");
#endif
then it will print "int", even if TYPE is defined to be char, and if
#if TYPE == char
printf("char");
#elif TYPE == int
printf("int");
#elif TYPE == double
printf("double");
#endif
then it will print "char", even if TYPE is defined to be int, etc.
ideas?