我目前正在从一本名为“Ivor Hortons Beginning Visual c ++ 2010”的书中学习c ++。
在我尝试过的所有示例中,我必须使用getch()来保持打开命令提示符,有时会从main方法的末尾删除return 0语句。
这是否是Windows 7的变幻莫测,是否会引发问题?这样做是没有问题的,但由于这不包含在书中,我想知道这是否是我设置错误的。
非常感谢:)
答案 0 :(得分:2)
使用_getch()代替getch()
答案 1 :(得分:1)
getch()
不是特定于操作系统的,但它不是直接可移植的。在C++
中执行此操作的首选方法是使用std::cin.get();
。
main
函数可以隐式return 0
(您不需要实际拥有该代码,请参阅下文)。
int main()
{
// valid, return 0 implied.
}
有关return 0
隐式main
的详细信息,请参阅this question。
答案 2 :(得分:1)
当程序结束时,该程序创建的任何资源(包括终端窗口)都将被释放。通过使用getch可以防止程序结束。这是正常行为,应该继续以这种方式工作,直到Windows成为远程记忆。
如果从现有的命令窗口启动程序,该窗口将不关闭,因为它不是由程序创建的。
答案 3 :(得分:0)
首先,getch()
不是标准的C或C ++函数。甚至在
Windows,我认为它的使用已被弃用;它的语义可以追溯到CP / M.
和早期的MS-DOS。
其次,它确实没有必要,至少不适用于控制台应用程序(和 我认为它不适用于非控制台应用程序)。如果你在跑 从控制台窗口打开程序,窗口保持打开状态。如果你是的话 从Visual Studios运行它,在它上面设置一个断点是微不足道的 return语句,它阻止程序,并保持窗口打开 (虽然IDE真的没有理由关闭它只是因为 你的程序已经终止)。