在无限循环中生成窗口时突破

时间:2016-03-11 12:35:26

标签: c++ infinite-loop

在我的节目中,我做了一个明显错字

for(int i = 0; i<mNoOfCores; i+3)

而不是

for(int i = 0; i<mNoOfCores; i++)

不幸的是,在循环中我生成了QT5窗口。所以我的Ubuntu系统绝对被拒绝,我只能在上电复位后重启。 (鼠标是响应式的,键盘也是如此。)有更好的方法吗?或者,通过这种方式,我可以从应用程序中拒绝我的操作系统?

1 个答案:

答案 0 :(得分:1)

编译器无法事先通知您有关无限循环的信息。这在许多地方都有讨论,hereherehere

您可以做的是使用简单的“双重检查”来防止自己挂起操作系统。例如:

int totalNoWindowsCreated = 0; // keep track of windows created OK
for(int i = 0; i<mNoOfCores; i+3)
{
  // Create window  
  totalNoWindowsCreated++; // If created OK
  assert(("Bug !", totalNoWindowsCreated <= mNoOfCores)); // Check
}

更新:当然,你可以在断言条件中犯错,在这种情况下,只需休息一下,喝咖啡:)。