如何在C中退出无限(; TRUE;)?

时间:2016-09-22 21:24:04

标签: c loops for-loop

我正在运行一个使用无限循环的模拟。 TRUE定义为1.在循环内,每个调用包含" state"是一个返回void的函数。

/* main sim loop */
for (i = 0, num_insn = 0; TRUE; i++) {
  writeback(state, &num_insn);
  execute(state);
  if (!(state->fetch_lock)) {
    decode(state);
    fetch(state);
  }
}

我想最终从"内部退出循环;如果"写回函数中的语句。这是怎么做到的?我尝试使用" break"但是我编译时遇到错误。

编辑:写回功能

if ((state->fetch_lock == TRUE)&&(fu_int__done == TRUE)&&(fu_fp_add_done ==TRUE)&&(fu_fp_mult_done == TRUE)&&(fu_fp_div_done == TRUE)) {
    break;
}

给出编译错误"错误:break语句不在循环内或切换"

1 个答案:

答案 0 :(得分:2)

可以从任何地方调用writehack函数。

将其更改为

   bool writeBack(...) {
    ...
    return true; // Break is require if in a loop
    return false; // Otherwise;

然后

for (i = 0, num_insn = 0; TRUE; i++) {
  if (writeback(state, &num_insn) ) {break; }
  execute(state);
  if (!(state->fetch_lock)) {
    decode(state);
    fetch(state);
  }
}