这段代码该怎么理解?
#define CALL(callname, progname, callmain) \
extern int callmain (int,char**); \
void callname (a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) \
char *a0; \
char *a1; \
char *a2; \
char *a3; \
char *a4; \
char *a5; \
char *a6; \
char *a7; \
char *a8; \
char *a9; \
char *a10; \
{ \
char *x[11]; \
int argc; \
char *argv[] = {progname,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; \
int i; \
for (i=0;i<11;i++) \
x[i] = NULL; \
x[0] = a0; \
x[1] = a1; \
x[2] = a2; \
x[3] = a3; \
x[4] = a4; \
x[5] = a5; \
x[6] = a6; \
x[7] = a7; \
x[8] = a8; \
x[9] = a9; \
x[10] = a10; \
argc=1; \
for (i=0; i<11;i++) \
if (x[i]) \
{ \
argv[argc++] = x[i];\
} \
callmain(argc,argv); \
}
[解决办法]
就是一个赋值再调用callmain传参的过程
[解决办法]
代码是C89标准之前的,作用是将callname做了宏定义,主要作用是为调用callmain做参数初始化,并调用之。
[解决办法]