Я только что перешел на 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 ++, если это имеет значение.
function
будет более подходящим, чем тегfunctional programming
, но теперь я не уверен. Если вы не согласны, можете откатиться назад. - person Matt Fenwick   schedule 12.10.2012n
в скобках во второй строке определения макроса? Может, стоит его пропустить? - person supercat   schedule 12.10.2012gcc -E program.c
- person Clinton Pierce   schedule 12.10.2012