如何从一种功能切换到另一种功能

How to alternate from one function to another

我有这些功能:

read(){
}

write(){
}

main(){
    cout << "This is a menu so you can choose what to do";
}

它实际上比那个更复杂,但是这个例子对你帮助我来说会很好。

我只想能够例如写,然后返回菜单,然后选择阅读等

我做不到:

read(){
 main();
}

main(){
    read();
}

因为main在read之前没有声明,所以我把main移到read上面,read在main之前没有声明。

确切地说,这个程序是一个议程,因此我可以创建日程安排和管理活动(写入),并且只查看包含所有活动的日历或只查看我的日程安排(读取)。我希望能够从 main 转到阅读,然后再转到 main,然后写你知道的

我想我可以将这些函数分成不同的文件,但我不知道如何从另一个文件调用函数。

有什么帮助吗?

好的,调用 main 不是一个好主意,但我想问题更多是关于如何让 2 个函数相互调用。

您至少需要转发声明一个:

int write(); //forward declare

int read() {
   return write(); // use write which is still forward declared for now
}

int write() { // now defining write
   return read();
}

显然这个示例代码意义不大(无限循环),但它说明了如何做到这一点。

这是另一种选择:

int main(void)
{
   bool call_read = true;
   while (true)
   {
      if (call_read)
      {
         read();
      }
      else
      {
         write();
      }
      call_read = !call_read;
    }
   return 0;
}

在上面的示例中,bool 变量用于在 readwrite 函数之间切换。

这种方法的一个很好的特点是调用的函数不需要相互了解。

编写菜单的一个好方法是在 main 中使用 while 循环和 switch 语句。假设读取和写入函数没有在其他地方分支,当它们完成时,它们 return 到它们的调用者 main()。 while 循环确保菜单在用户完成之前不会结束。

int main()
{
    char choice = '\n';
    while (choice != 'q') 
    {
    // Display menu options
       cout << "r: Read" << endl << "w: Write" << endl << "Enter a choice: ";
       cin >> choice;

    // Implement menu interface
        switch (choice)
        {
        case 'r':
            read();
            break;
        case 'w':
            write();
            break;
        case 'q':
            cout << "Quitting the menu. Bye!" << endl;
            break;
        default:
            cout << "Invalid choice!" << endl;
            break;
        } //end switch
     } // end while

   return 0;
} // end main