我试图在网上搜索,但我什么都没发现.. 所以我发布相关代码:
typedef struct wind {
float xlat;
float ylong;
float zheight;
float mod;
float elev;
float az;} wind_dat;
static void dataprocess( const char *, wind_dat& , int& ); // Errors C2143 and C2059
int main(int argc, char **argv)
{
int num;
char *filename = "Data/wind_data.txt";
wind_dat *dat;
dataprocess(filename, dat, num);
.../*many boring operation*/
}
static void dataprocess (const char *filename, wind_dat& dat, int& num) // Errors C2143 and C2059
{
int it;
float coord[3], obs_cart[3], a[3][3];
FILE *ptrfile;
if ((ptrfile=fopen(filename, "r"))==0)
{printf("\nError in opening file.\n");
exit(EXIT_FAILURE);}
fscanf(ptrfile,"%d",&num);
if ((dat=(wind_dat *)malloc(num*sizeof(wind_dat)))==NULL)
exit(EXIT_FAILURE);
pol2cart(obs_cart,obs[0],obs[1],obs[2]+6371000);
a[0][0]=cos(az)*cos(obs[1]+PI)+sin(az)*sin(PI+obs[1])*cos(PI-obs[0]);
a[0][1]=cos(az)*sin(obs[1]+PI)-sin(az)*cos(obs[1]+PI)*cos(PI-obs[0]);
a[0][2]=-sin(az)*sin(PI-obs[0]);
a[1][0]=sin(az)*cos(obs[1]+PI)-cos(az)*sin(obs[1]+PI)*cos(PI-obs[0]);
a[1][1]=sin(az)*sin(obs[1]+PI)+cos(az)*cos(obs[1]+PI)*cos(PI-obs[0]);
a[1][2]=cos(az)*sin(PI-obs[0]);
a[2][0]=sin(obs[1]+PI)*sin(PI-obs[0]);
a[2][1]=-sin(PI-obs[0])*cos(obs[1]+PI);
a[2][2]=cos(PI-obs[0]);
for (it=0;it<num;it++)
{fscanf(ptrfile,"%f %f %f %f %f %f",&dat[it].xlat, &dat[it].ylong, &dat[it].zheight, &dat[it].mod, &dat[it].elev, &dat[it].az);
pol2cart(coord, dat[it].xlat, dat[it].ylong, dat[it].zheight+6371000);
coord[0]=coord[0]-obs_cart[0];
coord[1]=coord[1]-obs_cart[1];
coord[2]=coord[2]-obs_cart[2];
dat[it].xlat = coord[0]*a[0][0]+coord[1]*a[0][1]+coord[2]*a[0][2];
dat[it].ylong = coord[0]*a[1][0]+coord[1]*a[1][1]+coord[2]*a[1][2];
dat[it].zheight=coord[0]*a[2][0]+coord[1]*a[2][1]+coord[2]*a[2][2];
dat[it].az=dat[it].az-az/PI*180;
}
fclose(ptrfile);
}
这是我尝试在声明dataprocess的两行中编译之后的错误消息,以及函数体的位置:
error C2143: syntax error : missing ')' before '&'
error C2143: syntax error : missing '{' before '&'
error C2059: syntax error : '&'
error C2059: syntax error : ')'
如果有什么不清楚我会为你编辑。
PS:请原谅我的英语不好...... 编辑:我写的错误就像建议一样 我正在使用VC ++ 2008并且在Web上我发现这个错误是由于使用C编译器引起的,但在我的情况下它是C ++编译器,所以我只是不明白我错过了什么..答案 0 :(得分:1)
static void dataprocess( const char *, wind_dat& , int& );
'type&amp; var'语法仅适用于C ++,C中不存在引用。请改用指针。