//////////////////// 以下为定义文件(.h)内容 ////////////////////////////
#define UPDATE(NAME) ({int _i;if(NAME##_obsolete_p) \
       for(_i=sizeof(NAME)/sizeof(NAME[0])-1;_i>=0;_i--)\
       NAME[_i]=NAME##_next[_i]; NAME##_obsolete_p=0;})
#define real float#define ACLASS extern 
#define ATOMIC(NAME,LEN,MEM) ACLASS real MEM NAME[LEN];\
    ACLASS real MEM NAME##_next[LEN];\
    ACLASS int VOLATILE NAME##_obsolete_p;ATOMIC(sf_coeff,     LPC+1,   COEFF_MEM);
ATOMIC(gp_coeff,     LPCLG+1, COEFF_MEM);
ATOMIC(pwf_z_coeff,  LPCW+1,  COEFF_MEM);
ATOMIC(pwf_p_coeff,  LPCW+1,  COEFF_MEM);
ATOMIC(shape_energy, NCWD, dm);
ATOMIC(imp_resp,     IDIM, dm);
/////////////////////// 定义文件内容结束 ////////////////////////////////////////////////// 以下为实现文件(.cpp)的报错部分,报错注释为对应行的 ///////////////////
if(pwf_z_coeff_obsolete_p)
{
UPDATE(pwf_z_coeff);  // 报错1: error C2059: syntax error : '{';
// 报错2: error C2065: '_i' : undeclared identifier
// 报错3: error C2143: syntax error : missing ';' before ')'
UPDATE(pwf_p_coeff); // 报错4: error C2059: syntax error : '{'
// 报错5: error C2059: syntax error : ')'
} // 报错6: error C2059: syntax error : '}'//////////////////// 说明及问题请教 ///////////////////
1)本程序为一参考程序,在VC++6.0环境下编译,编译时有上面6个错误,没有以下指出的不太理解的编译错误。2)sf_coeff; gp_coeff; pwf_z_coeff; pwf_p_coeff等变量没有在其它地方定义,但在程序中使用了,而且如上面的if语句中通过ATOMIC宏合成的变量pwf_z_coeff_obsolete_p也可使用。3)如1)中,宏定义确实声明了这些变量,以及在宏ATOMIC中声明了这些变量的连接变量(如变量pwf_z_coeff_obsolete_p),不理解!而且ATOMIC宏中说明为extern 变量,但不影响使用,为什么?4)ATOMIC宏中的MEM 做什么用?,程序中未定义,也找不到相应的说明。5)如何排错?6)谢谢!