我的主要功能中有我的开关案例和语句,如下所示:
int main(int argc, char *argv[])
{
int c;
while((c = getopt(argc,argv,"ABS"))!=-1)
{
switch(c)
{
case 'A':
flag = 0;
printf("open the port\n");
struct can_frame frame_rd;
open_port("vcan0");
printf("vcan0 port is opened");
fflush(stdout);
create_file();
while(1)
{
read_port(&frame_rd);
}
break;
case 'B':
flag = 1;
printf("open the port\n");
open_port("vcan0");
printf("vcan0 port is opened");
fflush(stdout);
create_binfile();
while(1)
{
read_port(&frame_rd);
}
break;
}
}
现在我想在用户传递参数时使用嵌套开关-S case A
我可以按如下方式进行操作吗?以下程序是否正确?
int main(int argc, char *argv[])
{
int c;
while((c = getopt(argc,argv,"ABS"))!=-1)
{
switch(c)
{
case 'A':
switch(c)
{
case 'S':
size = 100;
break;
}
flag = 0;
printf("open the port\n");
struct can_frame frame_rd;
open_port("vcan0");
printf("vcan0 port is opened");
fflush(stdout);
create_file();
while(1)
{
read_port(&frame_rd);
}
break;
case 'B':
flag = 1;
printf("open the port\n");
open_port("vcan0");
printf("vcan0 port is opened");
fflush(stdout);
create_binfile();
while(1)
{
read_port(&frame_rd);
}
break;
}
}
在上面的代码中我可以对嵌套的情况使用相同的switch(c)
,嵌套开关的用法是否正确?提前感谢。
答案 0 :(得分:1)
不,在外部swich情况'A'中,变量c可以被认为是常量,因此你的嵌套开关将找不到匹配的情况并且没有默认情况。
如果您知道您的参数是按特定顺序排列的,则可以直接解决它们,例如:第一个和第二个参数的argv [1]和argv [2]。