私は C# から C に来たばかりで、C# のような汎用関数を定義する方法を探していました。この投稿に出くわしましたが、コンパイルしようとすると、たくさんのエラーが発生します (「`n' はここでは宣言されていません (関数内ではありません)」、「「配列」の前の構文エラー」など)。これが私のコードです。
#include<conio.h>
#include<stdlib.h>
#define MAKE_PRINTEACH(TYPE)\
void printeach_##TYPE (TYPE[n] array, int n, void(*f)(TYPE)){\
int i;\
for(i = 0; i < n; i++) {\
f(array[i]);\
}\
}
MAKE_PRINTEACH(int)
MAKE_PRINTEACH(float)
void printInt(int x)
{
printf("got %d\n",x);
}
void printFloat(float x)
{
printf("got %f\n",x);
}
int main()
{
int[5] ia = {34,61,3,6,76};
float[6] fa = {2.4,0.5,55.2,22.0,6.76,3.14159265};
printeach_int(ia, 5, printInt);
printeach_float(fa,6,printFloat);
getch();
}
ここで何が間違っていますか?それが違いを生む場合、私はDevC ++を使用しています。