while ( fgets(eqvline, 1024, eqvfile) != NULL ) {

    eqvline[strlen(eqvline)-1] = '\0';

    if (!strcmp (eqvline, "$SIGNALMAP")) {
        start_store_mask = 1;
        continue;
    }

    if (!strcmp (eqvline, "$SIGNALMAPEND")) {
        _num_mask_pins = i;
        sim_inform ( sim, "[vTPSim] Total of %d pins found in equivalent file.\n", _num_mask_pins);
        //return;
        start_store_mask = 0;
    }
}


您能解释一下此代码中的continue;实际如何工作吗?执行continue;时,代码跳转到哪里?再次比较读取新行的eqvline吗?那么什么时候该代码if (!strcmp (eqvline, "$SIGNALMAPEND")) {被调用?

最佳答案

continue语句将控制权传递给
  最近出现的do,for或while陈述,
  绕过do,for或while语句中的所有其余语句
  身体。


在您的代码中,执行continue;后,将立即检查while循环的条件。

如果满足条件,则控制进入循环内部。第一

 eqvline[strlen(eqvline)-1] = '\0';


被执行。

然后,声明

 if (!strcmp (eqvline, "$SIGNALMAP"))


被执行。

10-04 21:54