c - 关于将变量更改为子例程的错误 C2143 和错误 C2059

标签 c syntax-error

我尝试在网上搜索,但一无所获。 所以我贴出相关代码:

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,在网上我发现这个错误是由使用 C 编译器引起的,但在我的例子中它是 C++ 编译器,所以我只是不明白我错过了什么..

最佳答案

static void   dataprocess( const char *, wind_dat& , int& );

“type & var”语法仅适用于 C++,C 中不存在引用。请改用指针。

关于c - 关于将变量更改为子例程的错误 C2143 和错误 C2059,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784333/

相关文章:

c - 在这个例子中,我如何只打印一次序列? (递归函数)

syntax-error - 拖入文件时在pharo中出现语法错误

python - Kivy Pong教程语法错误: invalid syntax

在linux中从C代码调用汇编函数

将负数从 String 转换为 unsigned Long

c - 用于以不同类型打印变量值的最通用的 C 宏

ruby-on-rails - 获取语​​法错误,输入意外终止

java.sql.sqlsyntaxerrorexception :comparison between numeric and char(ucs_basic) are not supported

python - python中的 “object of type int has no length”是什么意思?

c - 使用 fwrite 时使文件环绕