我正在尝试在C中编写一个通用的 printArray 函数,我将能够使用多个程序运行该函数,每个程序都有不同类型的数组。我这样做了:
#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");
}
我试过运行它,但无论 TYPE 被定义为什么,第一个#if
总是签入,这意味着 - 如果写了 if :
#if TYPE == int
printf("int");
#elif TYPE == char
printf("char");
#elif TYPE == double
printf("double");
#endif
那么它将打印“int”,即使 TYPE 被定义为 char,并且如果
#if TYPE == char
printf("char");
#elif TYPE == int
printf("int");
#elif TYPE == double
printf("double");
#endif
然后它将打印“char”,即使 TYPE 被定义为 int 等。
想法?