在我的节目中,我做了一个明显错字
for(int i = 0; i<mNoOfCores; i+3)
而不是
for(int i = 0; i<mNoOfCores; i++)
不幸的是,在循环中我生成了QT5窗口。所以我的Ubuntu系统绝对被拒绝,我只能在上电复位后重启。 (鼠标是响应式的,键盘也是如此。)有更好的方法吗?或者,通过这种方式,我可以从应用程序中拒绝我的操作系统?
答案 0 :(得分:1)
编译器无法事先通知您有关无限循环的信息。这在许多地方都有讨论,here,here,here。
您可以做的是使用简单的“双重检查”来防止自己挂起操作系统。例如:
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
}
更新:当然,你可以在断言条件中犯错,在这种情况下,只需休息一下,喝咖啡:)。