我的CASE 5/6/7/8收到此错误。
在我开始向CASE 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;
答案 0 :(得分:9)
student_record data_record[rec_cnt];
您无法在交换机中声明内容。
在一个区块中执行:
case 4:
{
student_record data_record[rec_cnt];
/* ... */
}
答案 1 :(得分:1)
在案例4中,您有一个数组声明: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;
答案 2 :(得分:0)
在案例4中:您已声明了一个新变量,该变量在整个交换机的其余部分保持在范围内。这仅在C99和C ++中有效,但通常会产生警告(而不是错误)。解决方案是在case主体周围添加{...}
以限制任何声明的变量的范围:
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;
就个人而言,我习惯在所有开关/案例结构中使用此表单,因为它使维护更简单。