//////////////////// 以下为定义文件(.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)谢谢!
#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)谢谢!
首先确定你的实现文件包含头文件了吗?你的是复制粘贴过来的,还是别人写好的
如果是从网页复制粘贴过来的话里面可能有其他字符,你把他全复制到记事本里,再复制回来看看