system()有什么坏处?

Nik*_*off 5 c++ windows winapi

鉴于您正在构建一个Windows专属程序,为什么这些电话system()如此讨厌?自从我开始用C++编程以来,"不要触摸系统"是我听到的非常多的东西.我温顺地遵守了这个原则,但它有什么坏处呢?

Bar*_*zKP 6

您放入系统调用的内容取决于您将运行该程序的操作系统.所以它完全不便携.此外,很多事情都可能出错,因为你只是将命令抛入虚空,并希望一切都会好起来的.错误处理(例如 - 要运行不存在的程序,或路径设置不正确,或者您没有权限,等等)是非常困难甚至是不可能的.

除了这一点,因为在大部分时间的评论中指出(真正的"最",如99.999%),也没有必要使用system.


Osw*_*ald 5

std::system()要求您信任该命令以执行您想要的操作.您无法验证此假设是否合理.例如,PATH环境变量的异常值可能导致执行与标准设置不同的程序.

调用的行为std::system()取决于系统.即使目前的要求是,应用程序不需要在其他操作系统上运行,此要求也可能会发生变化.考虑到这std::system()通常用于可以以更便携的方式实现的目的(尤其是初学者),因此不需要引入平台依赖性.