SDK を持つデバイスをプログラミングしています。
ディスプレイにいくつかのメニューを表示したいとします。通常、次のように進めます。
void showSomeMenu()
{
...
drawItem(0, "menu option1");
drawItem(1, "menu option2");
while(1)
{
key = getKey();
if(key == KEY_ENTER)
{
showSomeOtherMenu();
return; // or break
}
}
...
}
ユーザーが上記の [Enter] をクリックすると、開くことができることがわかりますsomeOtherMenu
。今、そのsomeOtherMenu
ユーザーから戻りたいと言います。次に、次のように実装します。
void showSomeOtherMenu()
{
...
// add menu items
while(1)
{
key = getKey();
if(key == KEY_ENTER)
{
showSomeMenu(); // Will open previous menu (implemented in the first snippet)
return;
}
}
...
}
このアプローチで私が奇妙に思うのは、次のことshowSomeMenu
です。次に、showSomeOtherMenu
Enter キーを押して呼び出されたものから。ここで、showSomeOtherMenu
Enter をクリックすると、再び呼び出しが行われますがshowSomeMenu
、への最初の呼び出しには戻る機会がありませんでした。showSomeMenu
このアプローチは機能し、メニューは正しく表示されますが、相互に関数を呼び出す無限ループで終わるのではないかと思っています。そして、スタックオーバーフローの問題やそのような問題が発生する可能性があります。
私が心配するのは正しいですか?このようにするためのこのアプローチは、サンプルに示されていました。だから私はそれが正しい方法であるべきだと思っていました。