What is the cause of these Visual Studio 2010 erro

2020-06-18 10:23发布

I don't know the cause of these errors I am receiving from Visual Studio 2010.

This is the code from my program from line 343 to line 408:

int create_den_from_img(char *img_file_name_part, int xlen, int ylen, int zlen )
{
  IplImage* imgs = 0;
  char str[80];
  unsigned char *data,*imgdata;

  /* allocating memory */
  data = (unsigned char *) malloc(xlen * ylen * zlen * sizeof(unsigned char) );
  if(data==NULL)
  {
    printf("error in allocating memory \n");
    exit(1);
  }

  /* Getting the filename & iterating through tiff images */

    for(int k = 0; k < zlen; k++)
    {   
        int count=2;
        int tmp=k+1;
        while(tmp/10)
        {
            count=count-1;
            tmp=tmp/10;
        }

        switch(count)
        {
            case 2:sprintf(str,"%s00%d.tif",img_file_name_part,k+1);
                    break;
            case 1:sprintf(str,"%s0%d.tif",img_file_name_part,k+1);
                    break;  
            default:sprintf(str,"%s%d.tif",img_file_name_part,k+1);
                    break;
        }
        printf("%s\n",str);

        /* Loading Image using OpenCV */
        imgs=cvLoadImage(str,-1);
        if(imgs==NULL)
        {
            printf("error in opening image \n");
            exit(1);
        }
        imgdata=(uchar *)imgs->imageData;

        for(int j =0; j < ylen; j++)
        {
            for(int i =0; i < xlen; i++)
            {
                data[ k*xlen*ylen + j*xlen + i ] = imgdata[ j*xlen+i ];
            }
        }

        cvReleaseImage(&imgs );
    }

    /* populating `data` variable is done. So, calling `write_den` */
    if(write_den("test.den",data,xlen,ylen,zlen)==0)
    {
        printf("Error in creating den file\n");
        exit(1);
    }
    printf("Den file created\n");

}

These are the list of errors:

Error   3   error C2143: syntax error : missing ';' before 'type'   c:\examples\denfile.c   358 1   MTP_TEST
Error   4   error C2143: syntax error : missing ';' before 'type'   c:\examples\denfile.c   358 1   MTP_TEST
Error   5   error C2143: syntax error : missing ')' before 'type'   c:\examples\denfile.c   358 1   MTP_TEST
Error   6   error C2143: syntax error : missing ';' before 'type'   c:\examples\denfile.c   358 1   MTP_TEST
Error   7   error C2065: 'k' : undeclared identifier    c:\examples\denfile.c   358 1   MTP_TEST
Error   9   error C2065: 'k' : undeclared identifier    c:\examples\denfile.c   358 1   MTP_TEST
Error   10  error C2059: syntax error : ')' c:\examples\denfile.c   358 1   MTP_TEST
Error   11  error C2143: syntax error : missing ';' before '{'  c:\examples\denfile.c   359 1   MTP_TEST
Error   12  error C2065: 'k' : undeclared identifier    c:\examples\denfile.c   361 1   MTP_TEST
Error   13  error C2065: 'k' : undeclared identifier    c:\examples\denfile.c   370 1   MTP_TEST
Error   14  error C2065: 'k' : undeclared identifier    c:\examples\denfile.c   372 1   MTP_TEST
Error   15  error C2065: 'k' : undeclared identifier    c:\examples\denfile.c   374 1   MTP_TEST
Error   16  error C2143: syntax error : missing ';' before 'type'   c:\examples\denfile.c   388 1   MTP_TEST
Error   17  error C2143: syntax error : missing ';' before 'type'   c:\examples\denfile.c   388 1   MTP_TEST
Error   18  error C2143: syntax error : missing ')' before 'type'   c:\examples\denfile.c   388 1   MTP_TEST
Error   19  error C2143: syntax error : missing ';' before 'type'   c:\examples\denfile.c   388 1   MTP_TEST
Error   20  error C2065: 'j' : undeclared identifier    c:\examples\denfile.c   388 1   MTP_TEST
Error   22  error C2065: 'j' : undeclared identifier    c:\examples\denfile.c   388 1   MTP_TEST
Error   23  error C2059: syntax error : ')' c:\examples\denfile.c   388 1   MTP_TEST
Error   24  error C2143: syntax error : missing ';' before '{'  c:\examples\denfile.c   389 1   MTP_TEST
Error   25  error C2143: syntax error : missing ';' before 'type'   c:\examples\denfile.c   390 1   MTP_TEST
Error   26  error C2143: syntax error : missing ';' before 'type'   c:\examples\denfile.c   390 1   MTP_TEST
Error   27  error C2143: syntax error : missing ')' before 'type'   c:\examples\denfile.c   390 1   MTP_TEST
Error   28  error C2143: syntax error : missing ';' before 'type'   c:\examples\denfile.c   390 1   MTP_TEST
Error   29  error C2065: 'i' : undeclared identifier    c:\examples\denfile.c   390 1   MTP_TEST
Error   31  error C2065: 'i' : undeclared identifier    c:\examples\denfile.c   390 1   MTP_TEST
Error   32  error C2059: syntax error : ')' c:\examples\denfile.c   390 1   MTP_TEST
Error   33  error C2143: syntax error : missing ';' before '{'  c:\examples\denfile.c   391 1   MTP_TEST
Error   34  error C2065: 'k' : undeclared identifier    c:\examples\denfile.c   392 1   MTP_TEST
Error   35  error C2065: 'j' : undeclared identifier    c:\examples\denfile.c   392 1   MTP_TEST
Error   36  error C2065: 'i' : undeclared identifier    c:\examples\denfile.c   392 1   MTP_TEST
Error   37  error C2065: 'j' : undeclared identifier    c:\examples\denfile.c   392 1   MTP_TEST
Error   38  error C2065: 'i' : undeclared identifier    c:\examples\denfile.c   392 1   MTP_TEST

I've been getting these kind of errors all day long. Sometimes the code compiles, while at other time it doesn't. Its really annoying.

2条回答
▲ chillily
2楼-- · 2020-06-18 10:35

Do you have a missing semicolon after a class/struct declaration before line 343 ?

One thing you can do is try another compiler to see if you get a different error message that speaks more to you. For example, there's Comeau online.

Otherwise, could you have some rogue #defines in your code or some of your includes? Since this doesn't happen all the time, could someone be playing tricks on you? Try to examine the preprocessed output.

查看更多
时光不老,我们不散
3楼-- · 2020-06-18 10:42

You're compiling a .c file, which for Microsoft Visual Studio means that you need to be writing C89 (aka C90) code, not C99 code or C++.

What this means is that you must declare your variables at the start of each block. This means that you can't do:

for (int k = 0; ...

You have to declare k at the start of the block and do:

for (k = 0; ...
查看更多
登录 后发表回答