为了账号安全,请及时绑定邮箱和手机立即绑定

系统(“暂停”);-为什么会出错?

系统(“暂停”);-为什么会出错?

C++
哔哔one 2019-06-03 16:10:22
系统(“暂停”);-为什么会出错?以下是一个我不太明白的问题:指挥部,system("pause");作为暂停程序并等待键盘输入继续的一种方式,向新程序员讲授。然而,许多资深程序员似乎对此不屑一顾,认为不应该在不同程度上这样做。有些人说它可以使用。有人说只有当你被锁在房间里而没有人看的时候才能使用。有人说如果你用它,他们会亲自来你家杀了你。我,我自己是一个新的程序员,没有正规的编程培训。我用它是因为我被教导要使用它。我不明白的是,如果它不是可以使用的东西,那么为什么我被教会使用它呢?或者,从另一方面来说,它真的没有那么糟糕吗?你对这个问题有什么看法?
查看完整描述

4 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

人们对此不屑一顾,因为它是一种特定于平台的黑客攻击,与实际学习编程无关,而是为了绕过IDE/OS的一个特性-从VisualStudio启动的控制台窗口在程序执行完毕后关闭,因此新用户无法看到他的新程序的输出。

安装在系统(“暂停”)运行Windows命令行“暂停”程序,并等待终止,然后它继续执行程序-控制台窗口保持打开,以便您可以读取输出。

更好的方法是在最后放置一个断点并对其进行调试,但这同样存在问题。


查看完整回答
反对 回复 2019-06-03
?
忽然笑

TA贡献1806条经验 获得超5个赞

太慢了。它依赖于平台。不安全。

第一:它能做什么。调用“system”就像在windows命令提示符中键入命令一样。对于您的应用程序来说,要进行这样的调用需要大量的设置和拆卸-而开销简直是荒谬的。

如果一个名为“暂停”的程序被放置到用户的路径中呢?只是调用系统(“暂停”)只保证一个名为“暂停”的程序被执行(希望你没有你的可执行文件名为“暂停”!)

只需编写您自己的使用_Getch的“暂停()”函数即可。好的,当然,_Getch也依赖于平台(注意:它是在“conio.h”中定义的)-但是它比system()如果您正在Windows上进行开发,并且它具有相同的效果(尽管向文本提供cout之类的内容是您的责任)。

基本上:既然您可以简单地添加两行代码,其中一行包含并获得更灵活的机制,那么为什么要引入这么多潜在的问题呢?


查看完整回答
反对 回复 2019-06-03
?
慕少森

TA贡献2019条经验 获得超9个赞

  • Slow:它必须跳过许多不必要的Windows代码和一个单独的程序来进行简单的操作
  • 不可移植的:依赖于暂停程序
  • 不好的方式:系统调用只能在

    真的

    必要
  • 更多的输入:System(“暂停”)比getchar()更长

简单的getchar()应该做得很好。


查看完整回答
反对 回复 2019-06-03
  • 4 回答
  • 0 关注
  • 672 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信