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")) {
?
答案 0 :(得分:3)
continue语句将控制传递给下一次迭代 最近的封闭do,for或while语句, 绕过do,for或while语句中的任何剩余语句 体。
在您的代码中,执行continue;
后,会立即检查while循环的条件。
如果满足条件,则控制进入循环内部。第一
eqvline[strlen(eqvline)-1] = '\0';
已执行。
然后,声明
if (!strcmp (eqvline, "$SIGNALMAP"))
已执行。
答案 1 :(得分:2)
不,它不会。 continue
跳到循环的开头,我。即首先测试条件(因为while
构造在执行之前测试,与do-while
不同),所以在continue
之后你将立即执行1}
fgets(eqvline, 1024, eqvfile) != NULL
然后,取决于此表达式的值,
eqvline[strlen(eqvline)-1] = '\0';
或循环体后的第一个语句。