-5
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")) {呼び出されるのでしょうか?

4

2 に答える 2

3

continue ステートメントは、do、for、または while ステートメント本体の残りのステートメントをバイパスして、それが表示されている最も近い囲み do、for、または while ステートメントの次の繰り返しに制御を渡します。

あなたのコードでは、continue;が実行された後、すぐに while ループの条件がチェックされます。

条件が満たされた場合、制御はループ内に入ります。初め

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

実行されます。

次に、ステートメント

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

実行されます。

于 2013-07-11T06:16:01.393 に答える