2012-03-11 6 views
4

사례 5/6/7/8에 대해이 오류가 발생합니다. 이 SWITCH 오류의 의미는 무엇입니까?

는 나는 내가 또한 기능 4.

오류가 무엇을 의미합니까 케이스에 호출 추가하기 시작하기 전에 작동되면서 분명 뭔가 확실 해요?

오류 : 가변적 수정 유형을 둘러싸는 switch 문을

switch(menu_selection()) 
    { 
     case 0 : i = find_empty_record(data_record);  //New record 
        if (i!=-99) 
        { 
         printf("\n\nRecord #%d found to be empty...\n\n",i); 
         data_entry(&data_record[i],i,&array_flag); 
        } 
     break; 

     case 1 :            //Edit 
       i=record_selection(array_flag); 
       data_entry(&data_record[i],i,&array_flag); 
     break; 

     case 2 : display_single(data_record,array_flag); //Display single record 

     break; 

     case 3 :           //Display all records 
       for (i=0;i<30;i++) 
        { 
         print_2_screen(&data_record[i],i,array_flag); 
        } 
     break; 

     case 4 : rec_cnt = get_text_file_size(import_file_name); //Import Text File 
        student_record data_record[rec_cnt]; 
        import_text_file(data_record,import_file_name,array_flag,rec_cnt); 
     break; 


     case 5 : // Import Binary File 
     break; 


     case 6 : 
       export_text(data_record,rec_cnt,array_flag);// Save to Text File 
     break; 

     case 7 : // Save to Binary File 
     break; 

     default : 
     break; 
    } 

} 
return 0; 
+1

코드의 어느 줄에 오류 메시지가 나타 납니까? –

+0

'case 4'의 내용을 중괄호 안에 넣으십시오. –

답변

8
student_record data_record[rec_cnt]; 

를 포함하지와 식별자의 범위에있는 경우 레이블 당신은 스위치 내부에 물건을 선언 할 수 없습니다.

  • 는 블록을 수행 스위치 전에 수행

    case 4: 
    { 
        student_record data_record[rec_cnt]; 
        /* ... */ 
    } 
    
  • 당신이 배열 선언이 경우 4에서
+0

위대한, 그 오류가 해결되었습니다. 이제 사용하지 않는 변수에 대해 경고합니다. 블록 안에있는 data_record입니다. 동적으로 텍스트 파일에서 구조체 배열을 만들려고 해요. 처음 시도 ... 초보자. 가장 좋은 방법의 아이디어? –

+0

@ChefFlambe 달성하려는 목표는 무엇입니까? 경고는 무엇입니까? – cnicutar

+0

수정 됨 ... 블록에 선언 만있었습니다. –

1

: student_record data_record[rec_cnt];

를 추가로 블록을 만듭니다

case 4: 
    { 
    rec_cnt = get_text_file_size(import_file_name); //Import Text File 
    student_record data_record[rec_cnt]; 
    import_text_file(data_record,import_file_name,array_flag,rec_cnt); 
    } 
    break; 
0

경우 4 : 새 변수를 선언했으며 스위치의 나머지 부분에 범위를 유지합니다. 이것은 C99 및 C++에서만 유효하지만 일반적으로 경고 (오류가 아님)도 생성합니다.

case 4 : 
    { 
     rec_cnt = get_text_file_size(import_file_name); //Import Text File 
       student_record data_record[rec_cnt]; 
       import_text_file(data_record,import_file_name,array_flag,rec_cnt); 
    } 
    break; 

가 개인적으로 나는 습관적으로 모든 스위치/경우이 양식을 사용는 유지 보수가 간단하게 때문에 구축 :이 솔루션은 어떤 선언 된 변수의 범위를 제한하는 케이스 본체 주위에 {...}를 추가하는 것입니다.

관련 문제