2016-09-22 66 views
-3

我正在运行一个使用无限循环的模拟。 TRUE定义为1.在循环内部,每个包含“state”的调用都是一个返回void的函数。如何在C中退出无限(; TRUE;)?

/* 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); 
    } 
} 

我想最终从回写函数中的“if”语句内部退出循环。这是如何完成的?我试图使用“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语句不是循环或交换机中”

+2

什么是你的错误信息? – EOF

+3

请将上面的代码放在里面 –

+1

编辑。抱歉。 – Kal

回答

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); 
    } 
} 
+0

对不起,错字是故意的。 –

+0

bool不是C中的类型,但我得到了要点 – Kal

+0

@Kal'bool'(又名'_Bool')是C中的一种类型。 – chux