2010-04-24 33 views
5

Tôi không biết nguyên nhân của các lỗi này tôi nhận được từ Visual Studio 2010.Nguyên nhân của những lỗi và cảnh báo Visual Studio 2010 này là gì?

Đây là mã từ chương trình của tôi từ dòng 343 đến dòng 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"); 

} 

Đây là danh sách các lỗi:

 
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 

Tôi đã gặp phải các loại lỗi này suốt cả ngày. Đôi khi mã biên dịch, trong khi vào lúc khác thì không. Nó thực sự phiền phức.

+0

bạn đã sao chép/qua một số mã từ một trình soạn thảo trình duyệt web /? Tôi đã có vấn đề như thế này trước khi có những ký tự ẩn có trong mã được dán. –

+2

Không có hành vi phạm tội, nhưng tôi không nghĩ rằng vấn đề nằm với MSVC. –

+0

Bạn muốn chuyển cờ dòng lệnh nào tới trình biên dịch? – Mark

Trả lời

13

Bạn đang biên soạn tệp .c, cho Microsoft Visual Studio có nghĩa là bạn cần phải viết mã C89 (hay còn gọi là C90), chứ không phải mã C99 hoặc C++.

Điều này có nghĩa là bạn phải khai báo biến của bạn ở đầu mỗi khối. Điều này có nghĩa rằng bạn không thể làm:

for (int k = 0; ... 

Bạn phải khai báo k vào lúc bắt đầu của khối và làm:

for (k = 0; ... 
+0

Hoặc chỉ biên dịch mã C++. Đó là tất cả C++ hợp lệ là tốt. +1. –

+0

@Billy: Tôi có các tùy chọn để đặt các ngôn ngữ khác nhau ở đâu? – volpack

+0

@Charles Bailey: Tôi tìm các tùy chọn để đặt ở đâu nếu sử dụng c89/c99/C++? – volpack

2

Bạn có dấu chấm phẩy bị thiếu sau khi khai báo lớp/cấu trúc trước dòng 343 không?

Một điều bạn có thể làm là thử một trình biên dịch khác để xem bạn có nhận được thông báo lỗi khác nói nhiều hơn với bạn hay không. Ví dụ: có Comeau online.

Nếu không, bạn có thể có một số giả mạo #defines trong mã của bạn hoặc một số bao gồm không? Vì điều này không xảy ra mọi lúc, có thể ai đó đang chơi trò ảo thuật với bạn không? Hãy thử kiểm tra đầu ra được xử lý trước.

+0

Không. kiểm tra kỹ lưỡng. Tôi thậm chí đã thử chỉ xóa mã và biên dịch này. Nó biên dịch tốt. – volpack

+0

@JRL: Lỗi đầu tiên là lần đầu tiên cho vòng lặp bên trong hàm này - tôi nghĩ nếu đó là một dấu chấm hết lớp chấm dứt dấu chấm phẩy thì sẽ có lỗi khi int gặp phải khi bắt đầu định nghĩa hàm. Nhưng tốt gỡ lỗi tâm linh - đây là điều đầu tiên tôi muốn kiểm tra. +1. –

Các vấn đề liên quan