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
TYPEがcharに定義されていても、「int」を出力します。
#if TYPE == char
printf("char");
#elif TYPE == int
printf("int");
#elif TYPE == double
printf("double");
#endif
次に、TYPEがintなどに定義されている場合でも、「char」を出力します。
アイデア?