c - ncurses 中建议的工作流程

标签 c ncurses curses

我正在尝试找出如何正确使用 ncurses。 我想创建几个菜单,例如每个菜单都会指向另一个菜单。

我应该制作一个菜单模板,然后将参数添加到通用菜单的函数中,该函数将选择哪个菜单选项/选择数组的大小/它将导致(使用 switch-case/if else)

gen_menu(1){...if (choice==1){gen_menu(2);}...}

为每个菜单创建不同的函数,然后从每个菜单调用该函数到另一个菜单?

menu1(){...if (choice==1){menu2();}...}

最佳答案

答案是无处不在的“视情况而定”;这两种设计都可以或多或少地干净地工作。不过,总的来说,我认为第二个组织比第一个组织更好。

如果您使用数据驱动的菜单,则每个菜单都需要一个适度复杂的数据结构。如果数据来自文件(想想 I18N/L10N — 国际化/本地化),则需要适当定义每个菜单以及每个菜单中的每个项目。这可能会导致在幕后产生大量代码。对于简单的菜单(无 I18N),您最终可能会为每个菜单提供一个相当复杂的数据结构。您可以在文件级别(静态变量)或函数级别定义它们。您的 gen_menu() 设计看起来将与单个函数可用的所有菜单结构一起运行。您的 menu1() 设计允许根据菜单功能定义菜单结构。

如果菜单不是数据驱动的(例如,如果您有一个单独的 switch 语句来处理每个菜单的操作),那么您应该为每个菜单提供一个单独的函数。如果没有别的的话,函数大小约束应该表明这一点。数百行长的函数并不好。

关于c - ncurses 中建议的工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19661726/

相关文章:

c - ncurses 终端大小

c - 在 ncurses 中打印长 unicode

c - 这些不同的 gcc 链接选项如何改变最终的可执行文件?

python - python 诅咒中的进度条

python - 编译 Python,找不到 curses.h

python - 意外的诅咒前/背景 256 色 init_pair'ing

c - 关于指针的困惑

c - socket.h 的 recv() 上的段错误

c - C 中的写入和读取,套接字 AF_UNIX

c - 提供具有单个参数的 C 函数以获取具有更少参数的新函数