我可以在 C 中的 Switch Case 中的另一个案例中使用一个案例吗
Can I use a case inside another case in a Switch Case in C
在这里,我在 Switch Case 中使用了一些按键事件。
当我按下 0 时,它指向 Case 0: 并返回到 MainWindow 我有,通过关闭第二个(Window2)。
如果我按 1 它会分别指向 Case 1 等等,这些操作将分别执行。
我的关键事件:
g_printerr("%s\n", gdk_keyval_name (event->keyval));
keypressed=gdk_keyval_name (event->keyval);
printf("The KeyEvent is: %s\n", keypressed);
char ch[10];
sprintf(ch, "%s\n", keypressed);
printf("The NewKeyEvent is: %s\n", ch);
int holdch=atoi(ch);
开关盒:
switch(holdch)
{
case 0:
printf("Close Window2")
break;
case 1:
printf("Open Quadrant1");
break;
case 2:
printf("Open Quadrant2");
break;
case 3:
printf("Open Quadrant3");
break;
case 4:
printf("Open Quadrant4");
break;
}
现在,我想在 运行ning 时关闭从 Case(1-4) 获取 运行 的操作,然后返回到第二个 window 从它之前离开的地方开始。
如何做到这一点?在 Case(1-4) 中可以使用另一个 Cases 吗?这次我想使用像 Esc 或 q 这样的按键。可能吗?
注意:
案例 0-> 关闭我现在所在的 window,此后就没有机会执行其他案例了。第二 Window 是包含 4 个象限的 Window。
案例(1-4)->全部可执行但一次只能执行一个
如果你想 运行 你的主要 - window 和象限 - window 代码顺序你需要 运行 在情况 1-4 中你有什么在一个单独的线程中:
How do I start threads in plain C?
该线程中的代码必须有一个开关来处理您要用于退出它的击键。
您可以嵌套 switch 语句。
(如果这没有帮助,那么您需要重新表述您的问题。)
在 case 中可以有另一个 switch
语句(嵌套的 switch case 语句)。示例:
switch(keyevent) {
case 0:
printf("Close Window2")
break;
case 1:
printf("Open Quadrant1");
switch(foo) {
case 1:
// ...
}
break;
// ...
}
但是,如果我正确理解您的用例,我认为您不需要它。
这样的事情怎么样:
switch(keyevent) {
case 0:
printf("Close Window2")
break;
case 1:
q1_is_open = true;
printf("Open Quadrant1");
break;
case 2:
q2_is_open = true;
printf("Open Quadrant2");
break;
case 3:
q3_is_open = true;
printf("Open Quadrant3");
break;
case 4:
q4_is_open = true;
printf("Open Quadrant4");
break;
case Q_BUTTON_PRESSED:
if (q1_is_open) {
printf("Close Quadrant1");
q1_is_open = false;
}
if (q2_is_open) {
printf("Close Quadrant2");
q2_is_open = false;
}
if (q3_is_open) {
printf("Close Quadrant3");
q3_is_open = false;
}
if (q4_is_open) {
printf("Close Quadrant4");
q4_is_open = false;
}
break;
}
在这里,我在 Switch Case 中使用了一些按键事件。
当我按下 0 时,它指向 Case 0: 并返回到 MainWindow 我有,通过关闭第二个(Window2)。 如果我按 1 它会分别指向 Case 1 等等,这些操作将分别执行。
我的关键事件:
g_printerr("%s\n", gdk_keyval_name (event->keyval));
keypressed=gdk_keyval_name (event->keyval);
printf("The KeyEvent is: %s\n", keypressed);
char ch[10];
sprintf(ch, "%s\n", keypressed);
printf("The NewKeyEvent is: %s\n", ch);
int holdch=atoi(ch);
开关盒:
switch(holdch)
{
case 0:
printf("Close Window2")
break;
case 1:
printf("Open Quadrant1");
break;
case 2:
printf("Open Quadrant2");
break;
case 3:
printf("Open Quadrant3");
break;
case 4:
printf("Open Quadrant4");
break;
}
现在,我想在 运行ning 时关闭从 Case(1-4) 获取 运行 的操作,然后返回到第二个 window 从它之前离开的地方开始。
如何做到这一点?在 Case(1-4) 中可以使用另一个 Cases 吗?这次我想使用像 Esc 或 q 这样的按键。可能吗?
注意:
案例 0-> 关闭我现在所在的 window,此后就没有机会执行其他案例了。第二 Window 是包含 4 个象限的 Window。
案例(1-4)->全部可执行但一次只能执行一个
如果你想 运行 你的主要 - window 和象限 - window 代码顺序你需要 运行 在情况 1-4 中你有什么在一个单独的线程中:
How do I start threads in plain C?
该线程中的代码必须有一个开关来处理您要用于退出它的击键。
您可以嵌套 switch 语句。
(如果这没有帮助,那么您需要重新表述您的问题。)
在 case 中可以有另一个 switch
语句(嵌套的 switch case 语句)。示例:
switch(keyevent) {
case 0:
printf("Close Window2")
break;
case 1:
printf("Open Quadrant1");
switch(foo) {
case 1:
// ...
}
break;
// ...
}
但是,如果我正确理解您的用例,我认为您不需要它。 这样的事情怎么样:
switch(keyevent) {
case 0:
printf("Close Window2")
break;
case 1:
q1_is_open = true;
printf("Open Quadrant1");
break;
case 2:
q2_is_open = true;
printf("Open Quadrant2");
break;
case 3:
q3_is_open = true;
printf("Open Quadrant3");
break;
case 4:
q4_is_open = true;
printf("Open Quadrant4");
break;
case Q_BUTTON_PRESSED:
if (q1_is_open) {
printf("Close Quadrant1");
q1_is_open = false;
}
if (q2_is_open) {
printf("Close Quadrant2");
q2_is_open = false;
}
if (q3_is_open) {
printf("Close Quadrant3");
q3_is_open = false;
}
if (q4_is_open) {
printf("Close Quadrant4");
q4_is_open = false;
}
break;
}